![](/img/trans.png)
[英]How do I run a bash script inside Python, but act as if it's running from another directory?
[英]How do I run code from a different directory with a bash script
我一直將代碼放在github上,但是遇到了實施障礙。 我在許多計算機(包括沒有root用戶訪問權限的計算機)上運行相同的代碼。
一段代碼(一個bash腳本)調用了一些python代碼,例如:
python somecode.py
外殼程序將運行正確版本的python,但找不到somecode.py。
我試過的
失敗#1:我嘗試將包含somecode.py的目錄和文件的完整路徑添加到PATH; 無濟於事。 [Errno 2]沒有這樣的文件或目錄
失敗#2:如果我在第一行中將完整路徑添加到python的正確版本中,則只能使其在一台計算機上工作:
#!/usr/local/cool/python/version/location
但是,這破壞了它在其他任何計算機上運行的能力。
失敗#3:如果我讓bash腳本說:
python /full/path/to/github/place/somecode.py
但同樣,這僅適用於一台計算機,因為不同計算機的路徑不同。
我真正想做的是 :我希望能夠在多台計算機上使用相同的代碼(bash腳本和somecode.py)。
歡迎提供任何有關如何正確執行此操作的建議。 謝謝!
添加:
#!/usr/bin/env python
在我的somecode.py代碼頂部;
mv somecode.py somecode
chmod +x somecode
確保PATH具有/ full / path / to / directory / with / somecode。
Bash腳本現在只說:
somecode
而且有效。
對於問題2,請嘗試
#!/usr/bin/env python
盡管它可能會在不同的機器上找到不同版本的Python,但是只要這不是問題,就應該解決該特定問題
參見Python部署和/ usr / bin / env可移植性的問題 。 Alex Martelli的這篇帖子重用了此內容。
如果您說python somefile.py
,它將把somefile.py
的位置作為當前目錄,而不是來自$PATH
。 它將從$PATH
python
的位置。
如果您說somefile.py
,它將從$PATH
中獲取somefile.py
的位置,並從#!
中獲取python
的位置#!
python腳本的一行,如果您遵循@Levon的建議,則可以使用PATH。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.