我应该在哪里放置我自己编写的Python包?

时间:2013-07-23 09:42:12

标签: python

是否有规范的位置放置自编包?我自己的搜索仅发布了一篇关于where to put version-independent pure Python packagesSO question for the canonical location under Linux的博文,而我正在使用Windows。

我的用例是,我希望能够在IPython会话期间导入我自己的包,就像任何site-package一样,无论我在哪个工作目录中启动会话。在Matlab中,相应的文件夹就是C:/Users/ojdo/Documents/MATLAB

import mypackage as mp
mp.awesomefunction()
...

4 个答案:

答案 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

自有软件包的自定义目录

  1. 在任何地方创建目录,例如C:\Users\ojdo\Documents\Python\Libs
  2. 将文件sitecustomize.py添加到Python安装的site-packages文件夹中,即C:\Python27\Lib\site-packages(适用于所有用户)或site.USER_SITE(适用于单个用户)。
  3. 然后用以下代码填充此文件:

    import site
    site.addsitedir(r'C:\Users\ojdo\Any\Folder\You\Like\Libs')
    
  4. Voilà,新目录现在会自动添加到每个(I)Python会话中的sys.path
  5. 工作原理:在每次启动Python时自动导入的包site也会尝试导入包sitecustomize以进行自定义包路径修改。在这种情况下,这个虚拟包由一个脚本组成,该脚本将个人包文件夹添加到Python路径中。

答案 2 :(得分:3)

答案 3 :(得分:1)

我有同样的问题,你的回答非常有帮助。 为了补充一点,我遇到了这个对我有帮助的例子:

http://python-packaging.readthedocs.io/en/latest/minimal.html

这是如何打包自己的代码,并在本地正确安装它(我想象这是你真正想要的)或在PyPI上分发的最小例子。以python的方式做事。