在同一个项目中使用多个Python解释器?

McH*_*nry 10 python pycharm

我正在使用pycharm,它只允许你使用一个解释器,例如Python 2.7.5或Python 3.5.1.

问题是我有一些来自谷歌的模块来访问分析数据,还有一个名为docxfactory的模块,我想一起使用.

我只能获得docxfactory才能使用Python 3.5.1并且我只能在2.7.5上使用分析工具...

我怎样才能得到它以便我可以将这两个模块一起使用?我在这里读到一个答案,据说将它们放在两个不同的项目中,除非我做错了,我试过没有成功......任何想法?

Jak*_*ger 13

不确定这是否适用于社区版,但在专业版中,这很简单。我们使用它为同一 Git + PyCharm 项目下的多个 Google Cloud Functions 中的每一个单独管理 virtualenv + 解释器。

假设你有一个像我这样的项目结构:

myproject
?   ??? function1
?   ?   ??? requirements.txt
?   ?   ??? main.py
?   ??? function2
?       ??? requirements.txt
?       ??? main.py
??? README.md
Run Code Online (Sandbox Code Playgroud)
  1. 打开你的项目并像往常一样设置解释器 + virtualenv(文件 -> 设置 -> 项目 -> 项目解释器)。创建一个新的 virtualenv 解释器,将其保存在项目的根目录下(例如,myproject/venv
    • 注意:这将是我们将覆盖的默认解释器 function1function2
  2. 为每个需要自己的 virtualenv 的子文件夹创建一个新的PyCharm 项目。您将将此项目附加到现有项目。
    • 文件 -> 打开 -> 选择子文件夹(例如,function1) -> 确定 -> “附加”
    • 注:错误的PyCharm可能导致此错误消息......如果是这样,选择open in a new window代替attach,然后关闭新窗口,然后再试一次。
  3. 返回项目解释器设置。注意:现在列出了两个项目,根myproject和子文件夹function1
    • 根据需要配置每个项目的解释器,例如,创建一个存储在myproject/function1/venv. 它们现在充当完全独立的解释器,而 PyCharm 可以很好地与两者配合使用。
  4. 对任意数量的子文件夹/虚拟环境重复步骤 2-3,例如function2在我的示例中。

如果一切顺利,您会注意到子文件夹以粗体显示,表明它们确实是独立的项目。


Mar*_*zer 11

这实际上可能是一些黑客攻击.

  • 关闭pycharm IDE.
  • 打开$PROJECT/.idea/modules.xml并添加另一个具有不同名称的模块,如下所示:

<modules> <module fileurl="file://$PROJECT_DIR$/.idea/jobs.iml" filepath="$PROJECT_DIR$/.idea/jobs.iml" /> <module fileurl="file://$PROJECT_DIR$/.idea/synonymer.iml" filepath="$PROJECT_DIR$/.idea/synonymer.iml" /> </modules>

  • 现在添加一个同名的文件$PROJECT/.idea.
  • 重新打开这个项目.
  • 打开项目设置,你会看到这样的事情:在此输入图像描述
  • 请注意,现在有两个模块,您可以单独配置每个模块.这意味着您可以配置文件夹,排除和不同的解释器.现在正是你正确配置事情的工作.

警告:这是一个在pycharm中没有GUI的hack.这可能会在任何升级到pycharm时停止工作.但是,我认为不会出于各种原因.

  • 惊人的。所有其他帖子都说没有办法做到这一点,但有很多方法可以做到:D (2认同)

use*_*028 9

一个想法是编写两个单独的脚本; 一个用于分析,一个用于docxfactory.决定哪一个是驱动程序,并让另一个驱动程序shell - 确保调用适当版本的python.

例如:

#/usr/bin/env python2.7
import subprocess
# Do something with analytics
# ...
# Now call docxfactory script
subprocess.call(['python3', 'docxcript.py'])
Run Code Online (Sandbox Code Playgroud)