我有多个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
我该怎么做?
答案 0 :(得分:0)
对于第三方图书馆,最好以库存方式安装它们 - 无论是系统site-packages
还是virtualenv
。
对于您正在其运行的计算机上积极开发的项目,可维护的解决方案是将其根目录添加到PYTHONPATH
,以便您可以{{ 1}}从任何地方。 That's what we did at my previous occupation.这里的主要优点是简单的代码库更新和切换。
另一种方法是使用relative imports,但它适用于包内引用,因此您不必在任何地方重申包名称。如果许多其他不相关的代码部分使用相同的模块,那么将共享部分作为一个独立的包可能更方便,这将是所有这些的依赖。
答案 1 :(得分:0)
您必须确保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