Python 如何使用bash脚本从其他目录运行代码

Python 如何使用bash脚本从其他目录运行代码,python,bash,shell,Python,Bash,Shell,我一直在将代码放在github上,但我遇到了实现障碍。我在许多计算机上运行相同的代码(包括我没有根访问权限的计算机) 一段代码(bash脚本)调用一些python代码,如: python somecode.py shell将运行正确版本的python,但找不到somecode.py 我所尝试的: 失败#1:我试图将包含somecode.py的目录和文件的完整路径添加到路径中;无济于事。[Errno 2]没有这样的文件或目录 失败#2:只有在顶行添加python正确版本的完整路径,我才能使它在一

我一直在将代码放在github上,但我遇到了实现障碍。我在许多计算机上运行相同的代码(包括我没有根访问权限的计算机)

一段代码(bash脚本)调用一些python代码,如:

python somecode.py
shell将运行正确版本的python,但找不到somecode.py

我所尝试的:

失败#1:我试图将包含somecode.py的目录和文件的完整路径添加到路径中;无济于事。[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
确保路径具有/full/PATH/to/directory/with/somecode

Bash脚本现在只显示:

somecode
它是有效的。

对于问题#2试试看

虽然它可能会在不同的机器上找到不同版本的Python,但只要这不是问题,它就应该解决特定的问题


你也看到这个问题了。如果你说
python somefile.py
,那么它将把
somefile.py
的位置作为当前目录,而不是从
$PATH
中。它将从
$PATH
获取
python
的位置


如果您说
somefile.py
,那么它将从
$PATH
获取
somefile.py
的位置,并从
获取
python
的位置python脚本的行,如果您遵循@Levon的建议,它可以使用路径。

bash脚本位于何处?Ako:我的bash脚本与python脚本位于同一目录中。我在远离该目录的目录中运行bash脚本。@JBWhitmore这如何解决您的
没有此类文件或目录的问题?@Tim,我想这足够长,可以将我如何解决的问题附加到问题中。“没有这样的文件”错误是在我尝试解决这个问题时出现的。“现在很好用了。”我误解了。“没有这样的文件”错误是由于您的shabang路径导致的,而不是因为没有找到
somecode.py
。好吧,恭喜你,编码快乐!
#!/usr/bin/env python