13

是否有放置自写包的规范位置?当我在 Windows 上工作时,我自己的搜索只产生了一篇关于在哪里放置与版本无关的纯 Python 包和一个关于 Linux 下规范位置的 SO 问题的博客文章。

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

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

4 回答 4

12

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

import setuptools

setuptools.setup(name='mypackage')

然后通过运行将您的软件包假安装到您的 python 安装site-packages中:

python setup.py develop

这很像 running python setup.py install,除了egg只是指向您的源代码树,因此您不必install在每次更改源代码后都这样做。

最后,您应该能够导入您的包:

python -c "import mypackage as mp; print mp.awesomefunction()"
于 2013-07-23T14:21:13.947 回答
9

多亏了这两个 附加链接,我不仅找到了我的问题的预期答案,而且还找到了我更喜欢的解决方案,具有讽刺意味的是,我的第一个搜索结果也解释了这一点,但被所有版本混淆了——(在) 依赖站点包术语。

回答原始问题:默认文件夹

我想知道我自己编写的包是否有规范的(如“默认”)位置。这存在:

>>> import site
>>> site.USER_SITE
'C:\\Users\\ojdo\\AppData\\Roaming\\Python\\Python27\\site-packages'

对于 Linux 和 Python 3 示例:

ojdo@ubuntu:~$ python3
>>> import site
>>> site.USER_SITE
'/home/ojdo/.local/lib/python3.6/site-packages'

用户方案包安装文档说明该文件夹USER_SITE(如果存在)将sys.path在解释器启动时自动添加到您的 Python 中,无需手动步骤。


奖励:自己的包的自定义目录

  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\Documents\Python\Libs')
    
  4. 瞧,新目录现在会自动添加到sys.path每个 (I)Python 会话中。

工作原理: 每次启动 Python 时自动导入的包site也尝试导入包sitecustomize以进行自定义包路径修改。在这种情况下,这个虚拟包包含一个将个人包文件夹添加到 Python 路径的脚本。

于 2013-07-23T13:09:53.987 回答
3

我会为此使用家庭方案:

http://docs.python.org/2/install/#alternate-installation-the-home-scheme

于 2013-07-23T12:26:12.680 回答
2

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

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

这是一个关于如何打包您自己的代码并在本地正确安装(我想这是您真正想要的)或在 PyPI 上分发的最小示例。以python方式做事。

于 2018-01-10T19:12:19.267 回答