繁体   English   中英

python:将其他目录中的文件包含到项目中

[英]python: include files from other directories into a project

我有多个应该使用多个共享文件的python项目,但我不知道如何在python中执行此操作。

如果我只是将文件复制到pyhton工作目录中,则可以正常使用:

from HBonds import calculateHBondsForSeveralReplicas, compareSameShapeHBMatrices, calculateHBonds

但我不想复制它。 我想从以下位置包括它:/ home / b / data / pythonWorkspace / util / HBonds

对我来说,这样做是有意义的(但它不起作用):

from /home/b/data/pythonWorkspace/util/HBonds/HBonds.py import calculateHBondsForSeveralReplicas, compareSameShapeHBMatrices, calculateHBonds

我怎样才能做到这一点?

对于第三方库,最好以库存方式安装它们-既可以安装到系统的site-packages ,也可以安装到virtualenv

对于正在运行机器的项目,一个可维护的解决方案是将其根目录添加到PYTHONPATH以便您可以从任何位置import <top_level_module>.<submodule>.<etc> 那就是我们在上一份工作中所做的。 这里的主要优点是琐碎的代码库更新和切换。

另一种方法是使用相对导入 ,但它是用于包内引用的,因此您不必在任何地方重复包的名称。 如果代码中许多其他不相关的部分使用相同的模块,则将共享的部分制作为单独的程序包可能会更方便,这对于所有程序包都是依赖的。

您必须确保PYTHONPATH包含该目录的路径,如先前答案中所指出的那样。

或者,您可以使用更简单的方法:使用类似这样的代码使其在运行时可用。

import os
import sys

folder = os.path.dirname('/home/b/data/pythonWorkspace/util/')

if dossier not in sys.path:
    sys.path.append(folder)

from HBonds import HBonds

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM