是否有规范的位置放置自编包?我自己的搜索仅发布了一篇关于where to put version-independent pure Python packages和SO question for the canonical location under Linux的博文,而我正在使用Windows。
我的用例是,我希望能够在IPython会话期间导入我自己的包,就像任何site-package一样,无论我在哪个工作目录中启动会话。在Matlab中,相应的文件夹就是C:/Users/ojdo/Documents/MATLAB
。
import mypackage as mp
mp.awesomefunction()
...
答案 0 :(得分:10)
将软件包的源代码放在任何您想要的位置,但至少在软件包外面提供一个最小setup.py
文件包:
import setuptools
setuptools.setup(name='mypackage')
然后通过运行:
将您的软件包伪装入您的python安装site-packages
python setup.py develop
这与运行python setup.py install
非常相似,只是egg
只指向源树,因此在每次更改源代码后都不必install
。
最后,您应该可以导入您的包:
python -c "import mypackage as mp; print mp.awesomefunction()"
答案 1 :(得分:6)
感谢two additional链接,我不仅找到了我的问题的预期答案,而且还找到了我更喜欢的解决方案 - 具有讽刺意味的是 - 我的第一次搜索也解释了这一点结果,但所有版本 - (in)依赖的site-package术语混淆。
回答原始问题
我想知道我的自编程包是否存在规范(如“默认”)位置。而且存在:
>>> import site
>>> site.USER_SITE
'C:\\Users\\ojdo\\AppData\\Roaming\\Python\\Python27\\site-packages'
user scheme package installation上的文档声明此文件夹(如果存在)将自动添加到sys.path
。
自有软件包的自定义目录
C:\Users\ojdo\Documents\Python\Libs
。sitecustomize.py
添加到Python安装的site-packages文件夹中,即C:\Python27\Lib\site-packages
(适用于所有用户)或site.USER_SITE
(适用于单个用户)。然后用以下代码填充此文件:
import site
site.addsitedir(r'C:\Users\ojdo\Any\Folder\You\Like\Libs')
sys.path
。工作原理:在每次启动Python时自动导入的包site也会尝试导入包sitecustomize
以进行自定义包路径修改。在这种情况下,这个虚拟包由一个脚本组成,该脚本将个人包文件夹添加到Python路径中。
答案 2 :(得分:3)
答案 3 :(得分:1)
我有同样的问题,你的回答非常有帮助。 为了补充一点,我遇到了这个对我有帮助的例子:
http://python-packaging.readthedocs.io/en/latest/minimal.html
这是如何打包自己的代码,并在本地正确安装它(我想象这是你真正想要的)或在PyPI上分发的最小例子。以python的方式做事。