Virtualenv myenv не создает виртуальную среду на жестком диске exFAT в Ubuntu 18.04 - PullRequest
0 голосов
/ 02 июня 2019

Я учу Django на Python 3.6.Я использую Ubuntu 18.04.2 LTS, которая также является новой для меня.Моя версия пипса 9.0.1.Моя проблема в том, что когда я пытаюсь создать виртуальную среду на внешнем накопителе exFAT с помощью команды virtualenv myenv , выдается ошибка, которую я поделился ниже.Но я могу создать виртуальную среду на рабочем столе с помощью той же команды.Проблема очень странная для меня.Я не могу решить проблему.Ребята, можете ли вы помочь мне?Заранее спасибо!

КОД ОБРАЗЦА: ОШИБКА

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'")]

1 Ответ

1 голос
/ 02 июня 2019

Я вижу две проблемы в том, что вы пытаетесь сделать. Первая, меньшая проблема заключается в том, что FAT не реализует символические ссылки и virtualenvs по умолчанию используют символические ссылки на ту версию python, с которой они были созданы. Вы можете попробовать virtualenv --always-copy, чтобы избежать символических ссылок.

Но затем вы переходите ко второй, более серьезной проблеме. Вы пытаетесь создать virtualenv на съемном диске, чтобы перенести его куда-нибудь. Это не работает - virtualenvs не перемещаем. Когда вам нужен virtualenv в другом месте, вы должны воссоздать его. Чтобы скопировать список установленных пакетов из одного virtualenv в другой, запустите его в оригинальном virtualenv:

pip freeze >requirements.txt

затем переместите файл requirements.txt в другое место, создайте новый virtualenv и восстановите пакеты:

virtualenv venv2
source venv2/bin/activate
pip install -r requirements.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...