亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 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 關注
  • 273 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號