我一直把我的代码放在github上,但是我遇到了一个实现障碍。我在许多计算机上运行相同的代码(包括我没有root访问权限的计算机)。
一段代码(一个bash脚本)调用一些python代码,如:
python somecode.py
shell将运行正确版本的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
它有效。
答案 0 :(得分:5)
问题#2尝试
#!/usr/bin/env python
虽然它可能会在不同的机器上找到不同版本的Python,但只要这不是问题就可以解决这个问题
也可以看到这个问题Python deployment and /usr/bin/env portability。这篇帖子由Alex Martelli重新使用。
答案 1 :(得分:2)
如果您说python somefile.py
,那么它将somefile.py
的位置作为当前目录,而不是$PATH
。它将取自python
的{{1}}位置。
如果您说$PATH
,那么somefile.py
的{{1}}的位置和somefile.py
的{{1}}位置就会显示$PATH
的位置脚本,如果你遵循@Levon的建议,可以使用PATH。