![](/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.