为了账号安全,请及时绑定邮箱和手机立即绑定

从 CLI 运行时不会加载 .env,但从 VSCode 运行时会加载

从 CLI 运行时不会加载 .env,但从 VSCode 运行时会加载

qq_笑_17 2023-12-26 16:45:13
我已经用 Python 编写了一个应用程序,从 VSCode 运行时工作正常,但是,当尝试从终端运行时,它无法启动。我得到的错误是:    SQLConnString = 'Driver={ODBC Driver 17 for SQL Server};Server=' + SQLServer+ ';Database=' + SQLDatabase + ';UID='+ SQLLogin +';PWD=' + SQLPasswordTypeError: can only concatenate str (not "NoneType") to str这显然很清楚,它表明至少这些变量(SQLServer、或)之一具有值,因此串联失败。我就明白这么多了。SQLDatabaseSQLLoginSQLPasswordNone然而,我不明白的是这些变量是预先定义和加载的:SQLServer = os.getenv('SQL_SERVER')SQLDatabase = os.getenv('SQL_DATABASE')SQLLogin = os.getenv('SQL_LOGIN')SQLPassword = os.getenv('SQL_PASSWORD')而且,就像我提到的,如果我在 VSCode 中运行 python 文件,那么该文件可以正常启动并工作;没有错误。所以有一些东西和我在VSCode中调试它和python3 ./mypythonfile.py在bash中运行不同。我在这里缺少什么,为什么当我从命令行运行它时,环境文件的值没有被拉入变量,而是当我从 VSCode 运行它时。这没有道理。为什么行为不同;一个不起作用,另一个工作正常。不幸的是,诸如“python3 not loading .env file in cli”之类的搜索引导我找到了告诉我如何创建/使用.env文件的资源;我有一个文件,它可以工作,但似乎不在 CLI 中,我不明白为什么。显然我错过了一些明显的东西,但是当它在 VSCode 中工作时,我希望它应该在 CLI 中工作。我也在两台不同的设备上尝试过,结果相同。在 VSCode 中运行良好,但无法从命令行启动。
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

找到了答案。我导入其他文件,这些文件也使用环境文件中的数据。在 VSCode 中,调试时,不需要单独load_dotenv()的文件,但是从 python3 运行时需要。我认为这是调试器中的错误。



查看完整回答
反对 回复 2023-12-26
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

我今天也遇到了同样的问题。一旦我了解到问题与设置 dubugger 的根目录有关,就可以直接修复它:


{

    "version": "0.2.0",

    "configurations": [

        {

            "name": "Python: Current File",

            "type": "python",

            "request": "launch",

            "program": "${file}",

            "cwd": "${fileDirname}", // <- the secret is here

            "console": "integratedTerminal",

            "justMyCode": true

        }

    ]

}

只需添加“cwd”作为 ${fileDirName} 即可将根目录设置为文件目录本身,然后所有相对路径也将被修复。


查看完整回答
反对 回复 2023-12-26
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

我遇到了类似的问题(在 VSCode 中运行,从 CLI 运行时失败),但我已经在使用 load_dotenv()。我的问题的根本原因是运行 load_dotenv() 的 python 文件位于 .env 文件所在的主文件夹下的子文件夹中。因此,解决方案是将 .env 文件的路径传递给 load_dotenv,简单地说load_dotenv(path_to_env_file)。这在 VSCode 和 CLI 中都有效。

我不太确定 VSCode 幕后发生了什么使其能够避免此问题。


查看完整回答
反对 回复 2023-12-26
  • 3 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信