我希望能够从命令行运行我的Python项目。我正在引用其他项目,所以我需要能够在其他文件夹中运行模块。
实现这项工作的一种方法是修改Pythonpath环境变量,但我认为这是滥用。另一个黑客是将我想要的所有文件复制到一个目录中,然后运行Python。有没有更好的方法呢?
注意:我实际上是在Eclipse中编程,但我希望能够远程运行该程序。
类似的问题:
答案 0 :(得分:10)
如果导入sys,它包含PYTHONPATH中的目录列表sys.path
将目录添加到此列表(sys.path.append(“my / path”))允许您正常导入当前模块中的这些位置,而无需更改系统上的全局设置。
答案 1 :(得分:5)
看看像
这样的工具virtualenv,用于设置虚拟python,您可以在其中安装模块而无需全局获取它们。 http://pypi.python.org/pypi/virtualenv
Setuptools,允许您为模块指定(并自动安装)依赖项。 http://pypi.python.org/pypi/setuptools(如果您遇到setuptools问题,请查看Distribute,一个维护的分叉。http://pypi.python.org/pypi/distribute)
Buildout,允许您部署完整的应用程序环境,包括第三方软件,如MySQL或其他任何东西。 http://pypi.python.org/pypi/zc.buildout/
答案 2 :(得分:1)
首先,我确保我想要包含的模块尚未全局安装。然后我在includee的目录中添加一个符号链接:
# With pwd == module to which I want to add functionality.
ln -s /path/to/some_other_module_to_include .
然后我可以进行标准导入。这允许多个版本等。它不需要更改任何全局设置,如果您在不同的机器上工作,则无需更改程序代码(只需更改符号链接)。
答案 3 :(得分:0)
如果通过“运行模块”表示导入它们,您可能会对我前一段时间提出的this问题感兴趣。
答案 4 :(得分:0)
我刚刚意识到我之前已经解决了这个问题。这是我使用的方法 - 比mavnn复杂得多,但我也解决了从Python 3.0运行Python2.x程序的问题
import os
import subprocess
env=os.environ.copy()
env['PYTHONPATH']=my_libraries
kwargs={"stdin":subprocess.PIPE, "env":env}
subprocess.Popen(["python","-u",program_path],**kwargs)