VirtualEnv和python-embed

Ten*_*rei 6 embed virtualenv python-3.x

我有一台使用Python 2运行许多应用程序的Windows计算机。我想添加一个我使用Python 3编写的新程序。为确保我不会搞砸任何东西,我想使用嵌入了Python 3的Virtualenv(嵌入Python 3) amd64)。

因此,我提取了嵌入式python 3,并尝试在启用--python选项的情况下运行virualenv。

我尝试运行virtualenv

    python -m virtualenv --python E:\Projects\python3-embed\python.exe E:\Projects\Virtual\
Run Code Online (Sandbox Code Playgroud)

我得到了这个错误:

Running virtualenv with interpreter E:\Projects\python3-embed\python.exe
Using base prefix 'E:\\Projects\\python3-embed'
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\virtualenv.py", line 2328, in <module>
    main()
  File "C:\Python27\lib\site-packages\virtualenv.py", line 713, in main
    symlink=options.symlink)
  File "C:\Python27\lib\site-packages\virtualenv.py", line 925, in create_environment
    site_packages=site_packages, clear=clear, symlink=symlink))
  File "C:\Python27\lib\site-packages\virtualenv.py", line 1147, in install_python
    writefile(site_filename_dst, SITE_PY)
  File "C:\Python27\lib\site-packages\virtualenv.py", line 362, in writefile
    with open(dest, 'wb') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'E:\\Projects\\Virtual\\python36.zip\\site.py'
Run Code Online (Sandbox Code Playgroud)

我不确定如何解决此错误。python36.zip中有一个site.pyd文件,但似乎virtualenv无法使用它。

Win*_*ing 7

提前抱歉

知道这不是您想要的答案,但我以(我们的)方式努力尝试,最终得到了这个解决方案。


TL; 博士

使用来自WinPython 的带有后缀“零”便携式安装程序

  • WinPython64-3.7.0.2Zero.exe(64 位版本,你想要这个
  • WinPython32-3.7.0.2Zero.exe(32位版)

太长版本

我试过的

  • 是的,我从这个页面下载了python-3.7.0-embed-amd64.zip
  • 是的,我按照此页面中的说明进行设置
  • 是的,它用作 python 解释器

    D:\temp\test>python
    Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
    >>>
    
    Run Code Online (Sandbox Code Playgroud)
  • 是的,我安装了包virtualenv

    D:\temp\test>virtualenv --version
    16.0.0
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后,繁荣(你问的地方)

    D:\temp\test>virtualenv ENV
    Using base prefix 'd:\\portable\\python-3.7.0-embed-amd64'
    Traceback (most recent call last):
    File "runpy.py", line 193, in _run_module_as_main
    File "runpy.py", line 85, in _run_code
    File "D:\portable\python-3.7.0-embed-amd64\Scripts\virtualenv.exe\__main__.py", line 9, in <module>
    File "D:\portable\python-3.7.0-embed-amd64\lib\site-packages\virtualenv.py", line 712, in main
        symlink=options.symlink)
    File "D:\portable\python-3.7.0-embed-amd64\lib\site-packages\virtualenv.py", line 927, in create_environment
        site_packages=site_packages, clear=clear, symlink=symlink))
    File "D:\portable\python-3.7.0-embed-amd64\lib\site-packages\virtualenv.py", line 1149, in install_python
        writefile(site_filename_dst, SITE_PY)
    File "D:\portable\python-3.7.0-embed-amd64\lib\site-packages\virtualenv.py", line 363, in writefile
        with open(dest, 'wb') as f:
    FileNotFoundError: [Errno 2] No such file or directory: 'D:\\temp\\test\\ENV\\python37.zip\\site.py'
    
    Run Code Online (Sandbox Code Playgroud)

    似乎有问题virtualenv,搜索过,有一个未解决的问题,我不喜欢那个冗长的解决方案。

    这是virtualenv结束

  • 然后,我试过venv

    D:\temp\test>python -m venv venv
    D:\portable\python-3.7.0-embed-amd64\python.exe: No module named venv
    
    Run Code Online (Sandbox Code Playgroud)

    是的,“内置模块”丢失了,Embedded Distribution文档甚至没有提到它,只是关于Tcl/tk (...)、pip 和 Python 文档的一些内容没有包括在内

    这是venv结束

好吧,从我的原点重新开始

选择Embedded Distribution的目的是(就像SOMEBODY一样):

确保我不会搞砸任何事情

  1. 这包括“不要在我不稳定和超大的 Windows 中安装任何东西”
  2. 但不一定“必须使用官方嵌入式分布
  3. 可移植和值得信赖的东西就足够了,是的便携式 Python
  4. 但是主页上写着“不再开发便携式 Python”,并提供一些选择
  5. 经过一番阅读,我想通了,我想要的是WinPython,带有的版本
  6. ta-da...就是这样

关于嵌入式分发的一些事情(来自官方文档

嵌入式发行版是一个包含最小 Python 环境的 ZIP 文件。它是intended for acting as part of another application,而不是由最终用户直接访问。