我有一个案例需要将一个python包的路径添加到sys.path
(而不是它的父目录),但是通常按名称引用包。
也许这很奇怪,但让我举例说明我的需要,也许你们知道如何实现这一目标。
我在/ home / me / python这样的路径中有各种实验文件夹,模块等。
现在我不想将该文件夹添加到我的sys.path
(PYTHONPATH
),因为有些实验模块名称可能与某些有用的内容发生冲突。
但是,在/home/me/python
内,我希望有一个像pyutils
这样的文件夹。所以我想将/home/me/python/pyutils
添加到PYTHONPATH
,但是,能够通过名称pyutils
引用包...就像我会在路径中添加/home/me/python
一样
答案 0 :(得分:0)
一个有用的事实是,向python路径添加内容不同于将其导入到解释器中。您可以构建模块和子模块,使名称不会发生冲突。
Look here关于如何创建模块。我阅读了这些文档,但我认为模块布局需要一些学习,这意味着创建模块,然后将它们导入脚本,看看导入是否笨拙或需要过多的资格。
分别考虑python import system。导入内容时,可以使用“导入... as”功能在导入时将其命名为不同的内容,从而防止命名冲突。
您似乎已经了解了如何使用sys.path()更改PYTHONPATH,如文档here所述。
答案 1 :(得分:0)
您有多种选择:
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
分支时才会显示它们。
答案 2 :(得分:-1)
我会回答我自己的问题,因为我在写这个问题时得到了一个想法,也许有人会需要这个。
我添加了从该文件夹到我的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