Я решил перейти с Windows на Linux, поэтому установил финальную бета-версию Ubuntu Raring.
К сожалению, у меня проблема с Python.
Я пытался использовать pip
созданный мной virtualenv для установки пакетов из requirements.txt
файла, подобного этому:pip install -r requirements.txt
Во время установки пакета я получил следующую ошибку:
buildutils/initlibzmq.c:10:20: fatal error: Python.h: No such file or directory
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
Я обнаружил в интернете, что, чтобы избавиться от этого, я должен установить python-dev
пакет deb:
sudo apt-get install python-dev
Поскольку я установил этот пакет, у меня возникает следующая ошибка при попытке запустить питон:
file: "ImportError: No module named _io".
I use this python from the virtualenv:
Python 2.7.4rc1 (default, Mar 30 2013, 15:39:28)
[GCC 4.7.2] on linux2
У кого-нибудь есть идея? Я ничего не могу найти в Google, и мне действительно нужно решить эту проблему, чтобы использовать Ubuntu для своей работы ...
Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ:
Кажется, мой virtualenv был испорчен по какой-то причине. Я удалил это.
Я пересоздал один и снова выполнил «pip install -r needs.txt», и теперь у меня есть эта ошибка:
Warning: failed to configure libzmq:
/bin/sh: 1: ./configure: not found
staging platform.hpp from: buildutils/include_linux
************************************************
Using bundled libzmq
************************************************
building 'zmq.libzmq' extension
creating build/temp.linux-x86_64-2.7/buildutils
creating build/temp.linux-x86_64-2.7/bundled
creating build/temp.linux-x86_64-2.7/bundled/zeromq
creating build/temp.linux-x86_64-2.7/bundled/zeromq/src
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibundled/zeromq/include -Ibundled -I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7 -c buildutils/initlibzmq.c -o build/temp.linux-x86_64-2.7/buildutils/initlibzmq.o
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibundled/zeromq/include -Ibundled -I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7 -c bundled/zeromq/src/ipc_address.cpp -o build/temp.linux-x86_64-2.7/bundled/zeromq/src/ipc_address.o
x86_64-linux-gnu-gcc: error trying to exec 'cc1plus': execvp: No such file or directory
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
EDIT2:
gcc
Ошибка выше может быть исправлена путем установки build-essential
пакета.
источник
Ответы:
Помимо стандартной библиотеки и сторонних модулей Python также имеет встроенные модули. Они написаны на C и связаны непосредственно в исполняемом файле Python. Вы можете узнать, что это такое:
virtualenv env
работает путем копирования/usr/bin/python2.7
вenv/bin/python
, а затем вставляет ссылки на все стандартные модули библиотеки вenv/lib/python2.7/*.py
.Когда вы обновляете системный Python, вы автоматически получаете обновленную стандартную библиотеку во всех ваших virtualenvs (потому что символические ссылки!), Но вы все еще используете старую копию исполняемого файла Python. Это означает, что вы также используете старые версии встроенных модулей.
Некоторые стандартные библиотечные модули зависят от встроенных модулей. И иногда стандартная библиотека Python 2.7. (X + 1) зависит от встроенных модулей, которые также были представлены в Python 2.7. (X + 1). Используя старый virtualenv, вы фактически пытаетесь использовать Python 2.7.x со стандартной библиотекой Python 2.7. (X + 1), и иногда это ломается.
Воссоздание virtualenv является правильным решением.
(Вероятно, достаточно заменить исполняемые файлы
bin/python
andbin/python2.7
внутри virtualenv, предполагая, что в обновленной системе Python не появилось никаких новых файлов stdlib.)источник
Вы должны заменить версию Python в вашем испорченном virtualenv.
Сделай это:
Создать новый Virtualenv
Найдите «python» (в моем случае virtualenvs находятся в домашнем каталоге)
Скопируйте "python" из нового virtualenv в ваш испорченный virtualenv
Вот и все. Теперь ваш CorruptedEnv должен быть исправлен.
источник
Обратите внимание, я добавляю этот ответ, чтобы вывести вопрос из очереди без ответа.
Как вы предлагаете себе во втором редактировании,
источник
Вам не нужно удалять виртуальную среду.
Просто следуйте этим шагам. скажем, ваша виртуальная среда зовут "mydev"
1) virtualenv mydev
Приведенная выше команда просто обновляется, не теряя ни одного пакета.
2) за пределами virtualenv, если ваш пункт не работает, то просто "easy_install pip" решит проблему
источник