Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.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
VirtualEnv python从项目文件夹导入不工作,仅从VirtualEnv文件夹导入_Python_Virtualenv - Fatal编程技术网

VirtualEnv python从项目文件夹导入不工作,仅从VirtualEnv文件夹导入

VirtualEnv python从项目文件夹导入不工作,仅从VirtualEnv文件夹导入,python,virtualenv,Python,Virtualenv,当我尝试导入通过pip安装在我的项目目录中的模块时,我遇到了virtualenv.的问题 我的项目结构是 \Project ..\dev (virtual env) ..test.py 我已经在虚拟环境上下文中使用pip安装了水泥,但是当我尝试包含水泥时,会出现导入错误 从我的项目文件夹的根目录 Project$ source dev/bin/activate (dev) Project$ pip list cement (2.10.2) pip (9.0.1) setuptools (

当我尝试导入通过pip安装在我的项目目录中的模块时,我遇到了virtualenv.的问题

我的项目结构是

\Project
..\dev    (virtual env)
..test.py
我已经在虚拟环境上下文中使用pip安装了水泥,但是当我尝试包含水泥时,会出现导入错误

从我的项目文件夹的根目录

Project$ source dev/bin/activate
(dev) Project$ pip list
cement (2.10.2)
pip (9.0.1)
setuptools (36.6.0)
wheel (0.30.0)
一切看起来都很好

(dev) Project$ python
Python 2.7.10 (default, Feb  7 2017, 00:08:15)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from cement.core.foundation import CementApp
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "cement.py", line 1, in <module>
    from cement.core.foundation import CementApp
ImportError: No module named core.foundation
>>> quit()
导入在virtualenv目录中运行良好


这是正确的行为吗?我是否需要将src文件存储在virtualenv目录中?在我的印象中,我的应用程序可以位于virtualenv目录之外,但一旦virtualenv处于活动状态,就可以访问已安装的模块?

这是正确的行为。您可以在虚拟环境中安装与项目相关的软件包,这样它就不会与用于计算机的原始python pip中的软件包混淆。版本不匹配有时是一个严重的问题,为了防止这种情况,我们使用虚拟环境

这是正确的行为吗


不,这不是正确的行为。激活VelualEnv之后,您应该能够从任何目录中运行<代码> Python < /代码>,甚至在您的项目之外,并且< Cyto> Cyth.C.E.FrasePrimeCimeTeppApp/<代码>应该工作。 我是否需要将src文件存储在virtualenv目录中

不,绝对不能将源文件移动到virtualenv目录中

我的印象是,我的应用程序可以在virtualenv目录之外运行,但一旦virtualenv处于活动状态,就可以访问已安装的模块

这是正确的,它应该起作用


我能想到的唯一一件事可能是阻止它工作,那就是你的virtualenv目录(
dev
)不知何故被破坏了。我建议重新创建它,这应该很容易。

不,这是不正确的行为。在激活了ValueLeNV之后,您应该能够从任何目录中运行<代码> Python < /C>,甚至在您的项目之外,并且< Cyto> Cyth.C.EngestPrimeCimeTeppApp/<代码>应该工作。绝对不能将源文件移动到virtualenv目录中。我想知道你的virtualenv目录是否会被破坏。我建议重新创建,这应该很容易。感谢您的见解@janos,我重新创建了虚拟环境,问题解决了,虚拟环境第一次一定没有正确创建。再次感谢!这是不正确的。我想你可能遗漏了问题的一些细节。OP已经激活了virtualenv,
pip列表
甚至显示了可用的包,但他不能将其导入到一个目录中,而是可以导入到另一个目录中。这不正常。另请参阅我对问题本身的评论。导入在虚拟环境中运行良好。但在虚拟环境之外,情况并非如此。我错过了什么?虚拟环境在他的两次处决中都很活跃。所以不管他的工作目录是什么,它都应该能工作。@janos,这也是我的理解,谢谢你的确认
(dev) Project$ cd dev/
(dev) dev$ python
Python 2.7.10 (default, Feb  7 2017, 00:08:15)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from cement.core.foundation import CementApp
>>>