在PyCharm中控制PYTHONPATH排序以首先搜索源文件夹

时间:2015-11-18 18:57:43

标签: python pycharm pythonpath

我创建了一个projectname包,并使用PyCharm来调试其中的代码。 我还使用venv为包设置Python环境。我按照以下标准包结构。

.
├── NAME
│   ├── __init__.py
│   ├── arith.py
│   └── arith.py
├── bin
│   └── app.py
├── build
│   ├── bdist.macosx-10.11-intel
│   └── lib
│       └── NAME
│           ├── __init__.py
│           └── arith.py
├── dist
│   └── projectname-0.1-py2.7.egg
├── docs
├── requirements.txt
├── setup.py
└── tests
    ├── __init__.py
    └── arith_tests.py

然后,我将项目导入PyCharm。 在Project:sekelton中,我将NAME / tests标记为源文件夹,并将build / dist标记为排除文件夹。

我还运行python setup.py install来构建生成的egg文件并将其安装到venv的site-package目录中。

enter image description here

问题是,首次调用site-package中安装的egg文件,因为PYTHONPATH显示来自import sys; print sys.path

['/python/structure/projects/skeleton/bin',
 'python/structure/projects/venv/lib/python2.7/site-packages/projectname-0.1-py2.7.egg',  <== egg file is searched first
 'python/structure/projects/skeleton/NAME',    <==  

这很烦人,因为我无法使用PyCharm调试代码,当我修改代码时,我不得不再次运行python setup.py install来更新egg文件。我可以通过从Project Interpreter设置中删除egg文件来规避这个问题,但我认为更改顺序应该是更好的选择。

enter image description here

如何在PyCharm中更改PYTHONPATH顺序,以便首先搜索本地源文件夹?

修改

当我尝试从Project Interpreter设置中删除软件包时,PyCharm会显示一条错误消息,但这是误报,因为PyCharm成功删除了egg文件,并更新了easy-install.pth。

1 个答案:

答案 0 :(得分:0)

使用pip install -e NAME,会生成指向NAME目录的projectname.egg-link,并更新easy-install.pth。我认为这是比python setup.py更好的方法,并解决了PYTHONPATH问题。

skeleton> pip install -e .
Obtaining file:///python/structure/projects/skeleton
Requirement already satisfied (use --upgrade to upgrade): nose in /python/structure/projects/venv/lib/python2.7/site-packages (from projectname==0.1)
Installing collected packages: projectname
  Running setup.py develop for projectname
Successfully installed projectname

采用这种方法,鸡蛋不在PYTHONPATH中。

['/python/structure/projects/skeleton/bin',     
'/python/structure/projects/skeleton/NAME',

更好的是,我们可以使用pip uninstall projectname删除包。

pip uninstall projectname
Uninstalling projectname-0.1:

python/structure/projects/venv/lib/python2.7/site-packages/projectname.egg-link
Proceed (y/n)? y
    Successfully uninstalled projectname-0.1    

我收到Installing Python packages from local file system folder with pip

的提示