Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法将模块导入虚拟环境中的文件_Python_Python 3.x - Fatal编程技术网

Python 无法将模块导入虚拟环境中的文件

Python 无法将模块导入虚拟环境中的文件,python,python-3.x,Python,Python 3.x,Cretaed virtualenv like:python3-m venv venv\u name 然后激活virtualenv:源代码完整/path/to/venv\u name/bin/activate 在此(激活的)环境中安装了psycopg2,如: sudo apt-get build-dep python3-psycopg2 pip install psycopg2-binary 然后,如果我在终端中打开这个文件夹,切换到python并尝试:import psycopg2,它就可以

Cretaed virtualenv like:
python3-m venv venv\u name

然后激活virtualenv:
源代码完整/path/to/venv\u name/bin/activate

在此(激活的)环境中安装了psycopg2,如:

sudo apt-get build-dep python3-psycopg2
pip install psycopg2-binary
然后,如果我在终端中打开这个文件夹,切换到
python
并尝试:
import psycopg2
,它就可以工作了

然后我将文件
test.py
创建到
venv_name
文件夹中,并添加到该文件中:
import psycopg2

尝试使用pycharm执行此文件,但出现错误:
没有名为'psycopg2'的模块。


所以virtualenv被激活并安装了模块
psycopg2
,但为什么我不能在这个virtualenv中将模块导入到文件中?

这意味着PyCharm使用了不同的解释器,即不是来自您的
venv\u名称
。您可以将其设置为使用python from
venv_name
with

PyCharm
->
首选项
->
项目:
Python解释器
->在“Python解释器”字段中选择“全部显示”->
+
添加新的
虚拟环境
->
现有环境
->选择路径到
完整/路径/to/venv_name/bin/Python


另一件事:您的python脚本不应该位于
venv_name
目录中。它们应该在它旁边。

这意味着PyCharm使用不同的解释器,即不是来自您的
venv_name
。您可以将其设置为使用python from
venv_name
with

PyCharm
->
首选项
->
项目:
Python解释器
->在“Python解释器”字段中选择“全部显示”->
+
添加新的
虚拟环境
->
现有环境
->选择路径到
完整/路径/to/venv_name/bin/Python


另一件事:您的python脚本不应该位于
venv_name
目录中。它们应该与之并驾齐驱。

另请参见Yevhen的回复,但需要指出的是:pip和pip3并没有使用相同的python,特别是如果导入在“python”上有效,但在“python3”上无效。@rasjani这不一定正确
pip
可以是
pip3
的别名,但不必是。与
python
相同,它可以是
python3
的别名。准确地说,这些别名也可以是独立的,即,
pip
可以是
pip3
的别名,而
python3
不是
python3
的别名,反之亦然。但考虑到若在执行pip安装时激活了venv,则可能会提示该软件包进入了全局位置,而不是进入venv。。因此,有可能是不同的解释器。另请参见Yevhen的回复,但需要指出的是:pip和pip3使用的不是同一个python,特别是如果导入在“python”上工作,而不是在“python3”上工作。@rasjani这不一定是真的
pip
可以是
pip3
的别名,但不必是。与
python
相同,它可以是
python3
的别名。准确地说,这些别名也可以是独立的,即,
pip
可以是
pip3
的别名,而
python3
不是
python3
的别名,反之亦然。但考虑到若在执行pip安装时激活了venv,则可能会提示该软件包进入了全局位置,而不是进入venv。。所以,有可能是不同的翻译。