python - Virtualenv myenv 不会在 Ubuntu 18.04 上的 exFAT 硬盘上创建虚拟环境

标签 python django virtualenv

我正在使用 python 3.6 学习 Django。我使用 Ubuntu 18.04.2 LTS,这对我来说也是新的。我的pip版本是9.0.1。我的问题是,当我尝试使用 virtualenv myenv 命令在我的外部 exFAT 驱动器上创建虚拟环境时,它给出了我在下面分享的错误。但我可以使用相同的命令在桌面上创建虚拟环境。这个问题对我来说很奇怪。我无法解决这个问题。你们能帮我吗?提前致谢!

示例代码:错误

c@p:/media/c/2NDTB/testpro$ virtualenv myenv
Using base prefix '/usr'
Traceback (most recent call last):
  File "/home/c/.local/lib/python3.6/site-packages/virtualenv.py", line 417, in copyfile
    os.symlink(os.path.realpath(src), dest)
OSError: [Errno 38] Function not implemented: '/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu' -> '/media/c/2NDTB/testpro/myenv/lib/python3.6/config-3.6m-x86_64-linux-gnu'

在处理上述异常的过程中,又发生了一个异常:

Traceback (most recent call last):
  File "/home/c/.local/bin/virtualenv", line 11, in <module>
    sys.exit(main())
  File "/home/c/.local/lib/python3.6/site-packages/virtualenv.py", line 831, in main
    symlink=options.symlink,
  File "/home/c/.local/lib/python3.6/site-packages/virtualenv.py", line 1106, in create_environment
    install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages=site_packages, clear=clear, symlink=symlink)
  File "/home/c/.local/lib/python3.6/site-packages/virtualenv.py", line 1390, in install_python
    copy_required_files(stdlib_dir, lib_dir, symlink)
  File "/home/c/.local/lib/python3.6/site-packages/virtualenv.py", line 1300, in copy_required_files
    copyfile(join(src_dir, fn), join(lib_dir, fn), symlink)
  File "/home/c/.local/lib/python3.6/site-packages/virtualenv.py", line 420, in copyfile
    copy_file_or_folder(src, dest, symlink)
  File "/home/c/.local/lib/python3.6/site-packages/virtualenv.py", line 398, in copy_file_or_folder
    shutil.copytree(src, dest, symlink)
  File "/usr/lib/python3.6/shutil.py", line 359, in copytree
    raise Error(errors)

shutil.Error: [('/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6m.so', '/media/c/2NDTB/testpro/myenv/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6m.so', "[Errno 38] Function not implemented: '../../x86_64-linux-gnu/libpython3.6m.so.1' -> '/media/c/2NDTB/testpro/myenv/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6m.so'"), ('/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6.so', '/media/c/2NDTB/testpro/myenv/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6.so', "[Errno 38] Function not implemented: '../../x86_64-linux-gnu/libpython3.6m.so.1' -> '/media/c/2NDTB/testpro/myenv/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6.so'")]

最佳答案

我发现您正在尝试做的事情有两个问题。第一个较小的问题是 FAT 不实现符号链接(symbolic link),而 virtualenv 默认使用它们创建的 Python 版本的符号链接(symbolic link)。您可以尝试使用 virtualenv --always-copy 来避免符号链接(symbolic link)。

但是接下来你遇到了第二个更大的问题,你正在尝试在可移动驱动器上创建一个 virtualenv 以将其移植到某个地方。这是行不通的——virtualenv 是不可重定位的。当您在不同的地方需要 virtualenv 时,您必须重新创建它。要将已安装的软件包列表从一个 virtualenv 复制到另一个 virtualenv,请在原始 virtualenv 中运行以下命令:

pip freeze >requirements.txt

然后将文件requirements.txt移动到其他位置,创建一个新的virtualenv并恢复包:

virtualenv venv2
source venv2/bin/activate
pip install -r requirements.txt

关于python - Virtualenv myenv 不会在 Ubuntu 18.04 上的 exFAT 硬盘上创建虚拟环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56412842/

相关文章:

python - 使用 OpenCV 对距离图像进行分水岭变换

python - cx_Oracle.DatabaseError : ORA-00933: SQL command not properly ended

python - 字符串中的变量,python 2.7

python - 如何修改 ModelMultipleChoiceField 的选项

python - 属性错误 : object has no attribute 'pk'

python - 执行Python脚本

python - 无法使用pipenv创建虚拟环境

Python - SimpleJSON 问题

python - 我可以从设置文件中使用 virtualenv 创建 venvs 吗?

django - Heroku Web dyno 运行完全达到内存限制吗?