为了避免出现 XY 问题:目标是在 Synology dsm 上创建虚拟环境,因此不需要 apt-get,其中 pip 是手动安装的。
我正在尝试在上述环境中创建一个虚拟环境(手动安装 pip 的 Synology dsm package python 3.8)。
但这会产生以下错误:
$ python3 -m venv new_venv
Error: Command '['/volume1/docker/builder/new_venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
Run Code Online (Sandbox Code Playgroud)
在发现该错误的过程中,我发现它venv工作得“很好”:
$ python3 -m venv --without-pip new_venv
Run Code Online (Sandbox Code Playgroud)
按预期工作。pip 本身也按预期工作。但是我必须手动安装 pip。这也导致 Synology dsm 版本的 python 没有该模块ensurepip..
# python3 -c "import ensurepip; print(ensurepip.__file__);"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'ensurepip'
Run Code Online (Sandbox Code Playgroud)
这就产生了问题:如何手动安装ensurepip …
我已经安装了 Python 3.9.2,因为它支持 Python.org 中推荐的 ARM64
之后我使用创建了一个虚拟环境python3 -m venv py39
现在我需要另一个环境,但使用 Python 3.8.8,因为 Tensorflow 仅支持 3.8。如何使用 Python 3.8 创建另一个虚拟环境,同时维护其他 3.9 环境。如果要求我使用conda,conda 是否支持 Mac M1 ARM64,因为根据我的搜索它不支持
我发现同样的问题被问了很多次,但对于 Windows 来说,答案非常古老,例如: Use different Python version with virtualenv 11 Years ago
我一直在虚拟环境中使用 python v3.9,它包含我长期以来使用的所有包和脚本。但是,现在随着 python v 3.10 的发布,它在全球范围内安装了自己,尽管我希望它安装在我用于 python v3.9 的同一个 venv 中,所以,如果有人可以帮助我如何在中安装 python v3.10与我的 v3.9 相同。我的IDE是PyCharm
此问题已解决,并向 Python.org 提交了错误报告。请参阅下面我的自我回答以了解解决方法,直到它在 Python 的未来版本中得到修复
\n我的一台电脑被这个 bug 咬了,它不再允许我创建 venv,并出现以下错误:
\nError: Command \'[\'C:\\\\Users\\\\kesh\\\\test\\\\.venv\\\\Scripts\\\\python.exe\', \'-Im\', \'ensurepip\', \'--upgrade\', \'--default-pip\']\' returned non-zero exit status 101.\nRun Code Online (Sandbox Code Playgroud)\n\n我试图弄清楚究竟发生了什么,但很快就没有想法了。以下是我到目前为止所尝试过的:
\nvenv通过运行 Python进入源代码venv.main(args=(\'.venv\',)),逐行调试,并注意到它使用Lib\\venv\\scripts\\nt\\python.exe.py 从 python 安装目录复制到本地文件夹。.venv\\Scriptsshutil.copyfile()Lib\\venv\\scripts\\nt\\python.exe,它会运行一条消息No pyvenv.cfg file(这是有道理的,因为 .cfg 文件位于.venv它看不到的文件夹中).venv\\Scripts\\python.exe,则会返回错误Unable to create process …我安装了Python3.10,并且在我一直在从事的项目中有一个venv。我不明白如何轻松升级。我的背景主要是 Node 和 JS,这肯定更简单,更容易更改版本。
我只是想创建一个新的 venv 但这不起作用
mpaccione@T430:~/Projects/investing/react-flask-app/server$ python3.10 -m venv ~/Projects/investing/react-flask-app/server
Error: Command '['/home/mpaccione/Projects/investing/react-flask-app/server/bin/python3.10', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
Run Code Online (Sandbox Code Playgroud)
我还想也许我可以更改 pyvenv 配置可以更改,但这也不起作用
home = /usr/bin
include-system-site-packages = false
version = 3.8
Run Code Online (Sandbox Code Playgroud)
到
home = /usr/bin/python3.10
include-system-site-packages = false
version = 3.10
Run Code Online (Sandbox Code Playgroud)
有没有一种简单直接的方法可以改变这种情况?我确信这是一个常见的用例!
我正在研究Linux Mint 17,我正在尝试使用Python3创建一个新的virtualenv,如下所示:
python3.6 -m venv env
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Error: Command '['/home/ric/myprojs/django-example-channels/env/bin/python3.6', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了这个错误信息,但没有找到任何太有用的信息.
这是我的pip版本,如果它有任何区别:
pip --version
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)
Run Code Online (Sandbox Code Playgroud)
我已经使用Python2一段时间了,但我是Python3的新手.我不知道自己可能缺少什么.
更新1:
回答@ cezar的问题,当我输入 which python3这个是我得到的:
$ which python3
/usr/bin/python3
Run Code Online (Sandbox Code Playgroud)
更新2:
回答@ChłopZLasu:
$ virtualenv -p python3.6 env
Running virtualenv with interpreter /usr/bin/python3.6
Using base prefix '/usr'
New python executable in /home/ric/myprojs/django-example-channels/example_channels/env/bin/python3.6
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 2328, in <module>
main()
File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 713, in main …Run Code Online (Sandbox Code Playgroud) 为了演示我遇到的问题,我将使用这个简单的函数,该函数位于/Users/X/Code/python/example/start.py:
def say_hello(name):
print("Saying hello to {}".format(name))
say_hello("John")
Run Code Online (Sandbox Code Playgroud)
我pipenv用来设置程序包和环境。在此文件夹(旁start.py),我还有其他四个文件- ,,Pipfile 和。Pipfile.lock.envlog.txt
当我运行时pipenv run python start.py,一切正常,我得到了输出。
现在,我希望此脚本每分钟运行一次,所以我使用设置了一个cron作业crontab -e,这是我最初在其中所拥有的:
* * * * * /usr/local/bin/pipenv run python /Users/X/Code/python/example/start.py >> /Users/X/Code/python/example/log.txt 2>&1
这给了我该log.txt文件中的错误转储:
RuntimeError: Click will abort further execution because Python 3 was configured to use ASCII as encoding for the environment. Consult http://click.pocoo.org/python3/for mitigation steps.
This system lists a couple of UTF-8 supporting locales that
you …Run Code Online (Sandbox Code Playgroud) 我对使用 venv 还很陌生。对于许多不同的软件包,有没有办法告诉每个 venv 使用了多少?当我删除 venv 时,我是否也删除了为其中的所有内容分配的内存空间?
在 Mac 上使用 Python 3.7.0。尝试使用venv在 python 3.4 后添加的模块。
我使用设置我的虚拟环境python3 venv -m path/to/my/dir- 我的问题是我需要激活这个虚拟环境才能使用吗?
该文件似乎在暗示我不需要?
您不需要特别激活环境;激活只是将虚拟环境的二进制目录添加到您的路径中,以便“python”调用虚拟环境的 Python 解释器,您可以运行已安装的脚本而无需使用它们的完整路径。但是,安装在虚拟环境中的所有脚本都应该可以在不激活的情况下运行,并自动与虚拟环境的 Python 一起运行。
如果我不必激活,将 venv 预先添加到二进制目录有什么好处?无论 venv 是否正常工作,都不会发生这种情况吗?
我发现了类似的帖子,主要与 venv 上的 linux 相关,但工作有问题。python 3.8 venv缺少激活命令但是,我对如何在Windows上解决它以及发生了什么感到困惑。
我通过在 pythons 网站上下载安装了 python3.8。然后我按照 3.8 文档https://docs.python.org/3/library/venv.html显示:
python3 -m venv /path/to/new/virtual/environment
我这样做了,但随后出现以下错误:
Error: Command '['E:\\py_envs\\hf4\\Scripts\\python.exe', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 101.
Run Code Online (Sandbox Code Playgroud)
当我使用:
python -m venv --without-pip hf4
进而 hf4\Scripts\activate
它适用于激活。我不明白的是,然后我可以运行 pip 并且它在激活的环境中就在那里。这似乎是一个相关的问题,我在系统 python 上安装的任何东西也可用。例如,在激活的会话中:
(hf4) E:\py_envs>where pip
C:\Users\local user\AppData\Local\Programs\Python\Python38\Scripts\pip.exe
Run Code Online (Sandbox Code Playgroud)
一个问题自然是如何解决这个问题,另一个问题是我希望对正在发生的事情进行解释以更好地理解它。是不是先搜索活动环境,找不到就默认系统版本?
python-venv ×10
python ×7
pip ×2
python-3.8 ×2
python-3.x ×2
virtualenv ×2
cron ×1
macos ×1
pipenv ×1
pycharm ×1
python-3.10 ×1
synology ×1
tensorflow ×1
windows ×1