[英]Add path to python package to sys.path
我有一种情况需要将python软件包的路径添加到sys.path
(而不是其父目录),但是通常按名称引用该软件包。 也许这很奇怪,但是让我举例说明我需要什么,也许你们知道如何实现这一目标。
我在/ home / me / python之类的路径中拥有各种实验性文件夹,模块等。 现在,我不想将该文件夹添加到我的sys.path
( PYTHONPATH
)中,因为有一些实验性模块,其名称可能与有用的名称冲突。 但是,在/home/me/python
我想要一个类似pyutils
的文件夹。 所以我想将/home/me/python/pyutils
到PYTHONPATH
,但是,能够通过其名称pyutils
来引用该包...就像我将/home/me/python
到路径中一样。
一个有用的事实是,向python路径添加内容不同于将其导入到解释器中。 您可以对模块和子模块进行结构化,以免名称冲突。
在这里查看有关如何创建模块的信息。 我阅读了文档,但我认为模块布局需要边做边学,这意味着创建模块,然后将其导入脚本,并查看导入是否笨拙或需要太多资格。
单独考虑python导入系统 。 导入某些内容时,可以使用“导入...为”功能在导入时为其命名不同的名称,从而防止命名冲突。
您似乎已经了解了如何使用sys.path()更改PYTHONPATH,如此处所述 。
您有多种选择:
pyutilsdir
,将pyutils
放在pyutilsdir
,然后将pyutilsdir
添加到PYTHONPATH中。 /home/me/python
之外,然后将python
添加到您的PYTHONPATH
。 python
添加到PYTHONPATH
。 使用git
或hg
类的版本控制系统,以根据需要使实验模块可用或不可用。
您可以拥有一个没有实验模块的master
分支,以及一个包含它们的feature
分支。 例如,使用git,您可以使用
git checkout [master|feature]
/home/me/python/pyutils
(git repo目录)的内容将根据签出的提交而改变。 因此,使用版本控制,您可以将实验模块保留在pyutils
,但仅在签出feature
分支时才使它们存在。
我会回答我自己的问题,因为我在写问题时有个主意,也许有人会需要。 我从该文件夹向我的site-packages文件夹添加了一个链接,如下所示: ln -s /home/me/python/pyutils /path/to/site-packages/pyutils
然后,由于PYTHONPATH包含/path/to/site-packages
文件夹,并且其中有一个pyutils
文件夹(带有init .py),因此我可以像这样导入:
from pyutils import mymodule
/home/me/python
的其余部分不在PYTHONPATH
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.