簡體   English   中英

Windows 10上的Makefile - 找不到文件

[英]Makefile on Windows 10 - file not found

過了一段時間,我終於成功安裝了python和pip,並使用Visual Studio Code在我的機器上運行它。

我在python的虛擬環境中工作,我們有一個帶有以下語句的Makefile

test:
    source .env && PYTHONPATH=. PY_ENV=testing py.test ${ARGS} --duration=20

文件.env位於Makefile旁邊的主目錄中。 它包含測試某些API所需的一些環境變量。

當我從文件中取出行並在終端中運行時,一切正常,所有測試都在運行等。

但是,如果我調用以下內容: make test我收到此錯誤:

$ make test
source .env && PYTHONPATH=. PY_ENV=testing py.test  --duration=20
/usr/bin/sh: line 0: source: .env: file not found
make: *** [test] Error 1
(venv)

對我來說,看起來當從Makefile運行此命令時,它看不到.env文件,但不知道如何解決它。

source命令沒有查找當前工作目錄中的文件。 man source

在當前shell環境中從filename讀取並執行命令,並返回從filename執行的最后一個命令的退出狀態。 如果filename不包含斜杠,則使用PATH中的文件名來查找包含filename的目錄。

像這樣更改文件路徑:

test:
    source ./.env && PYTHONPATH=. PY_ENV=testing py.test ${ARGS} --duration=20

需要注意的是,當它在POSIX模式運行,而不是在bash版本<4。這是由於執行錯誤發生這種錯誤(什么make用,因為它的默認shell是sh ,這通常是bash --posix )。 bash-2.05(修訂版28ef6c31,文件doc / bashref.info)的文檔中首次提到了正確的行為:

當Bash不處於POSIX模式時,如果在$ $ PATH中找不到FILENAME,則搜索當前目錄。

無論POSIX模式如何,這些舊版本都會搜索當前目錄。 只有在bash-4.0-rc1(修訂版3185942a,文件general.c)中才更正。 運行git diff 3185942a~ 3185942a general.c輸出此部分:

@@ -69,6 +69,7 @@ posix_initialize (on)
   if (on != 0)
     {
       interactive_comments = source_uses_path = expand_aliases = 1;
+      source_searches_cwd = 0;
     }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM