python 2.7 => ImportError: Không có mô-đun có tên _io


8

Tôi đã quyết định chuyển từ Windows sang Linux, vì vậy tôi đã cài đặt bản beta cuối cùng của Ubuntu Rared.

Thật không may, tôi có một vấn đề Python.

Tôi đã cố gắng sử dụng piptừ một virtualenv mà tôi đã tạo, để cài đặt các gói từ một requirements.txttệp như thế này:pip install -r requirements.txt

Tôi đã gặp lỗi sau khi cài đặt gói:

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

Tôi tìm thấy trên internet rằng để thoát khỏi điều này, tôi nên cài đặt python-devgói deb:

sudo apt-get install python-dev

Kể từ khi tôi cài đặt gói này, tôi gặp lỗi sau khi chạy 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

Có ai có ý tưởng gì không? Tôi không thể tìm thấy bất cứ điều gì trên Google và tôi thực sự cần phải giải quyết vấn đề này để sử dụng Ubuntu cho công việc của mình ...

Cảm ơn bạn đã giúp đỡ.

BIÊN TẬP:

Có vẻ như virtualenv của tôi đã bị hỏng vì một số lý do. Tôi gỡ cài đặt nó.

Tôi đã tạo lại một cái và thực hiện lại "pip install -r terms.txt" và bây giờ tôi gặp lỗi này:

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:

Các gcclỗi trên có thể được sửa chữa bằng cách cài đặt build-essentialgói.


Bạn nhận được lỗi này khi bạn cố chạy một kịch bản hoặc chơi chữ python?
Seth

Đó là khi chạy một kịch bản. Như bạn có thể thấy tôi vừa chỉnh sửa câu hỏi, vấn đề của tôi bây giờ hơi khác.
Benjamin

Câu trả lời:


3

Ngoài thư viện tiêu chuẩn và các mô-đun của bên thứ 3, Python cũng có các mô-đun dựng sẵn. Chúng được viết bằng C và được liên kết trực tiếp trong tệp thực thi Python. Bạn có thể tìm hiểu những gì như thế này:

$ 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 envhoạt động bằng cách sao chép /usr/bin/python2.7vào env/bin/python, và sau đó liên kết tất cả các mô-đun thư viện tiêu chuẩn vào env/lib/python2.7/*.py.

Khi bạn nâng cấp hệ thống Python của mình, bạn sẽ tự động nhận được thư viện chuẩn được cập nhật trong tất cả các virtualenv của bạn (vì liên kết tượng trưng!), Nhưng bạn vẫn đang sử dụng bản sao cũ của tệp thực thi Python. Điều này có nghĩa là bạn cũng đang sử dụng các phiên bản cũ của các mô-đun dựng sẵn.

Một số mô-đun thư viện tiêu chuẩn phụ thuộc vào mô-đun dựng sẵn. Và đôi khi thư viện chuẩn Python 2.7. (X + 1) phụ thuộc vào các mô đun dựng sẵn được giới thiệu trong Python 2.7. (X + 1). Bằng cách sử dụng một virtualenv cũ, bạn đang cố gắng sử dụng Python 2.7.x với thư viện chuẩn của Python 2.7. (X + 1), và đôi khi điều này bị phá vỡ.

Tạo lại virtualenv là giải pháp chính xác.

(Có lẽ đủ để thay thế bin/pythonbin/python2.7thực thi bên trong virtualenv, giả sử rằng không có tệp stdlib mới nào xuất hiện trong hệ thống Python được cập nhật.)


2

Bạn phải thay thế phiên bản python trong virtualenv bị hỏng của bạn.

Làm cái này:

  1. Tạo một Virtualenv mới

    mkvirtualenv MyNewTestEnv
    
  2. Xác định vị trí "python" (trong trường hợp của tôi là virtualenvs nằm trong thư mục chính)

    cd ~/.virtualenvs/MyNewTestEnv/bin
    
  3. Sao chép "python" từ virtualenv mới vào virtualenv bị hỏng của bạn

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

Đó là nó. Bây giờ CorruptedEnv của bạn sẽ được sửa.


1

Xin lưu ý tôi thêm câu trả lời này để đưa câu hỏi ra khỏi hàng đợi chưa được trả lời.

Khi bạn đề xuất chính mình trong lần chỉnh sửa thứ hai,

Lỗi gcc ở trên có thể được sửa bằng cách cài đặt gói debian xây dựng.


0

bạn không cần xóa môi trường ảo.

Chỉ cần làm theo các bước này. giả sử tên môi trường ảo của bạn là "mydev"

1) virtualenv mydev

Lệnh trên chỉ cần nâng cấp mà không mất gói nào.

2) bên ngoài virtualenv, nếu pip của bạn không hoạt động, thì chỉ cần "easy_install pip" sẽ giải quyết vấn đề

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.