Python:引用另一个项目

4 投票
5 回答
3629 浏览
提问于 2025-04-15 14:35

我想从命令行运行我的Python项目。我需要参考其他项目,所以我需要能够运行其他文件夹里的模块。

一种方法是修改Pythonpath这个环境变量,但我觉得这样不太好。还有一种办法是把我想要的所有文件都复制到一个文件夹里,然后再运行Python。有没有更好的方法呢?

注意:我其实是在Eclipse里编程,但我想能够远程运行这个程序。

类似的问题:

5 个回答

1

首先,我会确认我想要使用的模块没有被全局安装。接着,我在这个模块的目录里添加一个符号链接:

# With pwd == module to which I want to add functionality.
ln -s /path/to/some_other_module_to_include .

然后我就可以进行标准的导入了。这样做可以让我们使用多个版本的模块等。它不需要更改任何全局设置,而且如果你在不同的机器上工作,也不需要修改程序代码(只需要更改符号链接就可以了)。

5

看看以下这些工具:

  1. virtualenv:这个工具可以帮你创建一个虚拟的Python环境。在这个环境里,你可以安装你需要的模块,而不会影响到全局的Python设置。你可以在这里找到它:http://pypi.python.org/pypi/virtualenv

  2. Setuptools:这个工具让你可以指定你的模块需要哪些依赖,并且可以自动安装这些依赖。如果你在使用setuptools时遇到问题,可以看看它的一个维护版本,叫做Distribute,链接在这里:http://pypi.python.org/pypi/setuptoolshttp://pypi.python.org/pypi/distribute

  3. Buildout:这个工具可以帮助你部署一个完整的应用环境,包括一些第三方软件,比如MySQL或者其他任何东西。你可以在这里找到它:http://pypi.python.org/pypi/zc.buildout/

10

如果你导入了sys模块,它里面有一个列表,列出了PYTHONPATH中的所有目录,这个列表叫做sys.path。

如果你想把某些目录添加到这个列表中,比如用sys.path.append("my/path"),这样你就可以像平常一样从这些位置导入模块,而不需要去改变你系统上的全局设置。

撰写回答