2012-04-08 29 views
1

只有一个或两个模块,我需要从一个文件夹包含其他几个Python模块。当我将文件夹添加到我的路径中时,我有效地使该文件夹中的所有模块都可供我使用。但有几个过期的模块,我不想要。是否有可能只为我提供这些模块的某个子集?Python:是否有可能只有你的sys.path文件夹中的特定模块

+0

删除过时的? – miku 2012-04-08 19:36:07

+0

不要导入过时的? – 2012-04-08 19:37:09

+0

将过期的人移到另一个文件夹? – unsym 2012-04-08 19:44:12

回答

1

如果

import X 

进口模块X.没有别的。你的Python路径上的东西不等于被自动导入(它只是可导入的)。另请参见:

+0

我其实意味着可以导入,而不是实际导入。例如,我在virtualenv中个人安装了numpy,并且全局系统上有一个过时的版本。我只想从全球图书馆购买PyQt,但我不想冒险让旧版本的numpy与全球版本冲突。 – 2012-04-08 19:52:13

2

读你的问题我的理解是

  1. 要包括在你的PYTHONPATH的文件夹,因为你需要几个模块,从它。
  2. 由于它包含一些与您使用的版本相比可能已经过期的其他模块,因此您不想最终导入错误的库。

我会建议两个选项,可能适合你。

  1. 确保您包含的此文件夹位于sys.path的末尾。这将确保您已经导入的任何模块(如果存在于新包含的文件夹中)不会从该特定位置导入。
  2. (仅用于* nix)创建另一个文件夹,并为您感兴趣的文件创建符号链接。然后应该包含您创建的其他文件夹。

阅读您的意见,我建议,最好的办法是在某处添加以下行脚本,但你import`之前

import sys 
sys.path.append('/whatever') 
+0

是的,这正是我所要求的。无论如何要确保我包含的文件夹位于sys.path的末尾吗? 例如,是否有添加PYTHONPATH中的目录的时间顺序? – 2012-04-08 19:56:26

+0

@ChristopherDorian:你打算如何将路径添加到sys.path?如果你澄清它会更容易回答。一个显而易见的方法是'import sys \ nsys.path.append(“/ whatever”)'。这可以确保您的库位于搜索路径的末尾。你还有其他方式吗? – Abhijit 2012-04-08 19:58:29

+0

现在,我一直在使用PYTHONPATH来添加文件夹。到目前为止,它出现在sys.path中我自己的本地库下面,但我不确定这是否总是如此。 – 2012-04-08 20:03:08

1

创建一个新的目录。对于要导入的每个模块,添加一个指向真实模块的符号链接(ln -s)。然后将新目录添加到您的路径中,并且您不必使用包含订单来玩游戏。

mkdir ./mymods 
export PYTHONPATH="$PYTHONPATH":`pwd`/mymods 
cd mymods 
ln -s ../allmods/module1.py 
ln -s ../allmods/module2.py 
相关问题