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

ojd*_*jdo 10 python

是否有规范的位置放置自编包?我自己的搜索只产生了一篇博文,内容是关于在Linux下放置与版本无关的纯Python软件包以及针对规范位置SO问题,而我正在使用Windows.

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

import mypackage as mp
mp.awesomefunction()
...
Run Code Online (Sandbox Code Playgroud)

Dol*_*lph 11

将包的来源放在任何你想要的地方,但至少在包装setup.py外面给你的包一个最小的文件:

import setuptools

setuptools.setup(name='mypackage')
Run Code Online (Sandbox Code Playgroud)

然后运行以下命令假装 - 将你的软件包安装到你的python安装中site-packages:

python setup.py develop
Run Code Online (Sandbox Code Playgroud)

这很像运行python setup.py install,除了egg指向源树之外,所以你不必install在每次源代码更改之后.

最后,您应该可以导入您的包:

python -c "import mypackage as mp; print mp.awesomefunction()"
Run Code Online (Sandbox Code Playgroud)


ojd*_*jdo 8

感谢这两个 额外的链接,我不仅找到了我的问题的预期答案,而且还找到了我更喜欢的解决方案 - 具有讽刺意味的是 - 在我的第一个搜索结果中也有解释,但是所有版本都混淆了 - (在)依赖的站点包语言.

回答原始问题

我想知道我自编的包是否有规范(如"默认")位置.这存在:

>>> import site
>>> site.USER_SITE
'C:\\Users\\ojdo\\AppData\\Roaming\\Python\\Python27\\site-packages'
Run Code Online (Sandbox Code Playgroud)

有关用户方案程序包安装的文档说明此文件夹(如果存在)将自动添加到该文件夹​​中USER_SITE.

自己包的自定义目录

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

    ojdo@ubuntu:~$ python3
    >>> import site
    >>> site.USER_SITE
    '/home/ojdo/.local/lib/python3.6/site-packages'
    
    Run Code Online (Sandbox Code Playgroud)
  4. Voilà,新目录现在自动添加到site.USER_SITE每个(I)Python会话中.

工作原理:在每次启动Python时自动导入的程序包站点也会尝试导入程序包sys.path以进行自定义程序包路径修改.在这种情况下,此虚拟包由一个脚本组成,该脚本将个人包文件夹添加到Python路径中.