我想创建一个Python模块的“库”,我可以从几个单独的项目文件夹中访问它。
例如,我希望/ proj1 /和/ proj2 /中的Python脚本可以访问/ lib /。
/lib/help.py
/lib/more_help.py
/proj1/script.py
/proj1/script2.py
/proj2/this_script.py
/proj2/another_script.py
我不希望单个目录包含所有Python脚本,因为这看起来相当混乱。我也绝对不想将相同的/ lib /脚本复制到每个不同的项目中。
在Python中处理这个问题的理想方法是什么?是appending to Python's path吗?或者这更像是一个黑客?这似乎具有使文件不太便携的缺点。或者是this question/answer关于使用相对路径?或其他什么?
我应该补充一点,我对Python 2.x感兴趣而不是3.x,如果重要的话。
答案 0 :(得分:11)
将lib/
变为package,然后将其放入sys.path
中的一个目录中(或添加新条目)。然后你可以导入例如lib.help
进入您的项目。
答案 1 :(得分:3)
遵循每个人都采用的标准方法:使用正确的setup.py使代码成为正确的Python包。好处是:easy_install'able,易于分发,易于生成命令行脚本(通过console_scripts入口点)等....
答案 2 :(得分:2)
我认为您可以用来控制项目环境的最佳工具是virtualenv。您创建一个新的虚拟环境并在那里安装您的软件包,然后使用virtualenv为您提供的python可执行文件运行您的项目。
可能你应该在你的库中使用distutils,这样用virtualenv安装它真的很容易,因为virtualenv安装setuptools或在虚拟环境中分发,从而允许你从pypi或本地安装在虚拟环境包中机。
还可以创建一个自定义引导脚本,在创建虚拟环境后自动安装一些库。