簡體   English   中英

如何使用bash腳本從其他目錄運行代碼

[英]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.

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