是否有规范的位置放置自编包?我自己的搜索只产生了一篇博文,内容是关于在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)
感谢这两个 额外的链接,我不仅找到了我的问题的预期答案,而且还找到了我更喜欢的解决方案 - 具有讽刺意味的是 - 在我的第一个搜索结果中也有解释,但是所有版本都混淆了 - (在)依赖的站点包语言.
回答原始问题
我想知道我自编的包是否有规范(如"默认")位置.这存在:
>>> import site
>>> site.USER_SITE
'C:\\Users\\ojdo\\AppData\\Roaming\\Python\\Python27\\site-packages'
Run Code Online (Sandbox Code Playgroud)
有关用户方案程序包安装的文档说明此文件夹(如果存在)将自动添加到该文件夹中USER_SITE.
自己包的自定义目录
sys.path.C:\Users\ojdo\Documents\Python\Libs到Python安装的site-packages文件夹中,即sitecustomize.py(对于所有用户)或C:\Python27\Lib\site-packages(对于单个用户).然后使用以下代码填充此文件:
ojdo@ubuntu:~$ python3
>>> import site
>>> site.USER_SITE
'/home/ojdo/.local/lib/python3.6/site-packages'
Run Code Online (Sandbox Code Playgroud)site.USER_SITE每个(I)Python会话中.工作原理:在每次启动Python时自动导入的程序包站点也会尝试导入程序包sys.path以进行自定义程序包路径修改.在这种情况下,此虚拟包由一个脚本组成,该脚本将个人包文件夹添加到Python路径中.