Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 我的virtualenv设置不正确吗?_Python_Virtualenv_Packages - Fatal编程技术网

Python 我的virtualenv设置不正确吗?

Python 我的virtualenv设置不正确吗?,python,virtualenv,packages,Python,Virtualenv,Packages,我的文件系统如下所示: home/virtualenv/flaskenv home/python/flask/[我所有的flask项目] 我最初在virtualenv/flaskenv文件夹中设置我的virtualenv。 我的印象是,当我想使用virtualenv时,我需要导航到该文件夹并激活它(source flaskenv/bin/activate.fish),然后导航到我的flask projects文件夹以正确运行它们。但是,我可以运行它们,而无需激活我的VirtualNV 我觉得我做

我的文件系统如下所示:

home/virtualenv/flaskenv

home/python/flask/[我所有的flask项目]

我最初在virtualenv/flaskenv文件夹中设置我的virtualenv。 我的印象是,当我想使用virtualenv时,我需要导航到该文件夹并激活它(source flaskenv/bin/activate.fish),然后导航到我的flask projects文件夹以正确运行它们。但是,我可以运行它们,而无需激活我的VirtualNV

我觉得我做错了什么。我记得当我第一次开始使用virtualenv时,我很困惑,在几个不同的文件夹中运行了“pip install flask”(和其他几个软件包),但我不记得是哪个文件夹

我怎么知道我是否在不该安装的地方安装了软件包?我怎么清理它们?注意:当我运行“pipfreeze”时,我会得到几十个结果,我的virtualenv文件夹、python文件夹和所有单独的项目文件夹都是相同的


目前,我对内部工作原理知之甚少,也不知道它是否应该是这样工作的,但我有一种唠叨的感觉,觉得我做得都不对。

可能是您在系统范围内和每个VirtaulenV内部安装了
flask
。然后,无论是否激活virtualenv,您都可以运行程序。这不一定是个问题

除非您正在处理冲突的软件包和/或冲突的版本,否则就不迫切需要virtualenv。它们很好用,并且有助于共享源代码,因为您可以轻松地跟踪每个项目的确切依赖关系。但在全系统范围内安装软件包也可以

Akash Kothawale建议使用
——无网站包
,但这是较新的virtualenv版本中的默认行为。新的virtualenv应该没有软件包。要知道您正在正确设置,请创建一个新的环境,激活它并运行

pip freeze

在安装任何东西之前。这将返回一个空列表(无输出),您的Flask程序将不会运行。然后安装Flask以确保它再次工作。

很可能您的所有软件包都已安装到
~/.local/lib/pythonX.Y/site-packages
。使用
--无站点软件包
标志重新创建您的
flaskenv
目录,或者您可以使用
pip uninstall package name
卸载它们,然后激活您的flaskenv,然后再次安装。@AkashKothawale我考虑过这样做,但安装的软件包太多了,我自己没有这么做,所以我觉得我不应该把它们全部卸载。我刚刚卸载了一对我记得自己做过的。大约有20个名为“pyobjc-framework-xxxxx”的包,这些包看起来可能像系统文件?谢谢,这很有帮助。后续问题:你知道为什么一个包不会出现在pip冻结中吗?该软件包肯定安装在我的一个virtualenv中,但在我运行该命令时它没有出现。你激活了virtualenv吗?您是否在没有sudo的情况下运行了
pip freeze
?这很重要。virtualenv中哪个pip的
结果是什么。虚拟电视的完整路径是什么?在环境中运行
pwd
,所以我认为这实际上是我的错误。我在一个虚拟电视里有一个虚拟电视,两个名字都一样。当我删除了里面的一个,突然pip freeze显示了正确的包。