python 2.7 => ImportError: Никакой модуль, названный _io

Я решил переключиться от Windows до Linux, таким образом, я установил Ubuntu заключительная бета Полная нетерпения.

К сожалению, у меня есть проблема Python.

Я пытался использовать pip от virtualenv я создал, для установки пакетов от a 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

Так как я установил этот пакет, у меня есть следующая ошибка, когда я пытаюсь запустить Python:

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 был поврежден по некоторым причинам. Я удалил его.

Я воссоздал один и выполнил "установку зернышка-r requirements.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 пакет.

8
задан 16 August 2015 в 22:52

4 ответа

Вы должны заменить версию Python в вашем испорченном virtualenv.

Сделайте это:

  1. Создайте новый Virtualenv

    mkvirtualenv MyNewTestEnv
    
  2. Найдите «python» (в моем случае virtualenvs находятся в домашнем каталоге)

    cd ~/.virtualenvs/MyNewTestEnv/bin
    
  3. Скопируйте «python» из нового virtualenv в поврежденный virtualenv

    cp ~/.virtualenvs/MyNewTestEnv/bin/python ~/.virtualenvs/<yourCorruptedEnv>/bin
    

Это. Теперь ваш CorruptedEnv должен быть исправлен.

0
ответ дан 16 August 2015 в 22:52

В дополнение к стандартной библиотеке и сторонним модулям Python также имеет встроенные модули. Они написаны на C и связаны непосредственно в исполняемом файле Python. Вы можете узнать, как это выглядит:

$ python
Python 2.7.4 (default, Apr 19 2013, 18:28:01) 
[GCC 4.7.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.builtin_module_names
('__builtin__', '__main__', '_ast', '_bisect', '_codecs', '_collections', '_functools', '_heapq', '_io', '_locale', '_md5', '_random', '_sha', '_sha256', '_sha512', '_socket', '_sre', '_struct', '_symtable', '_warnings', '_weakref', 'array', 'binascii', 'cPickle', 'cStringIO', 'cmath', 'errno', 'exceptions', 'fcntl', 'gc', 'grp', 'imp', 'itertools', 'marshal', 'math', 'operator', 'posix', 'pwd', 'select', 'signal', 'spwd', 'strop', 'sys', 'syslog', 'thread', 'time', 'unicodedata', 'xxsubtype', 'zipimport', 'zlib')

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 и bin/python2.7 внутри virtualenv, предполагая, что в обновленной системе Python не появилось никаких новых файлов stdlib.)

0
ответ дан 16 August 2015 в 22:52

Вам не нужно удалять виртуальную среду.

Просто следуйте этим шагам. скажем, ваша виртуальная среда называется "mydev"

1) virtualenv mydev

Приведенная выше команда просто обновляется, не теряя ни одного пакета.

2) за пределами virtualenv, если ваш пункт не работает, то просто «easy_install pip» решит проблему

0
ответ дан 16 August 2015 в 22:52

Обратите внимание, я добавил этот ответ, чтобы вывести вопрос из очереди без ответа.

Как вы предлагаете во втором редактировании,

Приведенная выше ошибка gcc может быть исправлена ​​путем установки пакета debian build-essential.

0
ответ дан 16 August 2015 в 22:52

Другие вопросы по тегам:

Похожие вопросы: