2012-04-28 25 views
54

Nâng cấp lên Ubuntu chính xác Pangolin (12.04), và Ngẫu nhiên của Python hiện đã bị hỏng ... Tôi nghi ngờ những thứ khác có thể bị hỏng. Làm thế nào để sửa lỗi Python?Python ImportError không thể nhập urandom Kể từ khi Ubuntu 12.04 nâng cấp

File "/usr/lib/python2.7/random.py", line 47, in <module> 
    from os import urandom as _urandom 
ImportError: cannot import name urandom 

Than ôi, Python nghèo! Tôi biết anh ta, ngẫu nhiên, một mô-đun của vô hạn jest, của hầu hết các hỗn loạn có thể xảy ra. Ông đã mang tôi trên randint của mình() một nghìn lần, và bây giờ làm thế nào abhorr'd trong không gian làm việc của tôi nó! Trình xử lý ngoại lệ của tôi tăng lên.

chỉnh sửa Chạy trong virtualenv

+0

@ Mark0978 Nếu bạn gặp sự cố khi đóng câu hỏi, hãy hỏi [meta]. Đừng * không * troll câu hỏi và thêm ý kiến ​​bởi vì bạn không thích những gì đã xảy ra. Tôi đã mở lại câu hỏi dựa trên nhận xét đầu tiên, nhưng những gì bạn đang làm không thích hợp cho trang web. Vui lòng tránh điều đó trong tương lai hoặc có thể thực hiện thêm hành động của người kiểm duyệt. – casperOne

Trả lời

45

Đây có phải là vấn đề của bạn không?

https://bugs.launchpad.net/ubuntu/+source/python-defaults/+bug/989856

Dường như được gây ra bằng cách chạy nó trong một môi trường ảo, và có một công việc xung quanh.

BTW đây là kết quả hàng đầu trong google.

+0

Cảm ơn bạn đã liên kết. Nó gợi ý xây dựng lại môi trường ảo của một người. Tuy nhiên, một số người trong chúng ta có vài chục virtualenv, mỗi cái có rất nhiều phụ thuộc. Bạn có biết nếu có bất kỳ giải pháp nào khác có thể không yêu cầu việc xây dựng lại này cho từng giải pháp không? –

+0

Tôi đang bối rối như thế nào mà có thể làm việc xung quanh.Nếu mỗi máy ảo có trình thông dịch python được cài đặt cục bộ của riêng mình thì làm thế nào bạn có thể thực hiện một thay đổi đối với một máy ảo và sửa những người khác? –

+4

Như Adam Victor đã viết ở đây: https://bugs.launchpad.net/ubuntu/+source/python-defaults/+bug/989856 Bạn có thể thử $: virtualenv ~/path/to/virtualenv hoặc khi bạn đang ở trong virtualenvs dir $: ls | xargs -I {} virtualenv {} – lechup

0

Được rồi, có lẽ nó chỉ là không được cấu hình? Kiểm tra trang web this và xem phần Định cấu hình.

7

Tôi đã nhận được lỗi này và sửa lỗi bằng cách chỉ chạy lại virtualenv (ví dụ: virtualenv --no-site-packages ~/venv/myvirtualenv/).

+0

Có, nó hoạt động. – Paolo

36

tôi đã cùng một vấn đề khi nâng cấp lên 12.10, và khi nâng cấp lên 16,04 (Trong 16,04, thông điệp là no module named datetime.)

Để giải quyết nó chỉ chạy virtualenv qua quá trình cài đặt tương tự và nó làm việc. Cho nó --no-site-packages cờ để giữ gìn các module của bạn:

$ virtualenv --no-site-packages ~/lib/virtualenv/netunong 
Overwriting /home/adam/lib/virtualenv/netunong/lib/python2.7/site.py with new content 
New python executable in /home/adam/lib/virtualenv/netunong/bin/python 
Installing distribute.....<skippping dots, of course>.......done. 
Installing pip................done. 
Overwriting /home/adam/lib/virtualenv/netunong/bin/activate with new content 
Overwriting /home/adam/lib/virtualenv/netunong/bin/activate_this.py with new content 

Kể từ khi tôi có tất cả các virtualenvs của tôi trong cùng một thư mục, tôi chỉ chạy:

$ ls | xargs -I{} virtualenv --no-site-packages {} 
+1

Thật tuyệt vời - tuy nhiên lưu ý rằng nếu bạn có các tùy chọn tùy chỉnh cho môi trường ảo của mình (đáng chú ý là các phiên bản python khác nhau), ở trên có thể xóa chúng –

+0

vì đã vào *; làm python = "\' {ls $ ve/bin/python; ls $ ve/bin/python *. * 2>/dev/null | sắp xếp;} | tail -n 1 \ '"; python = \ 'tên cơ sở" $ python "\'; virtualenv --python $ python $ ve; done –

+0

Làm việc cho tôi trên 10.04 và một con trăn 2.6 venv cho một ứng dụng rộng rãi django venv. Tôi thậm chí không cần phải thực hiện 'pip install -r requirements/base.txt' trên venvới (làm mới) vì tất cả các mô-đun python vẫn được cài đặt. – hobs

1

giải pháp khác là để loại bỏ pip nếu bạn cài đặt nó với apt-get sử dụng wget để lấy nó

wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py 

và sau đó chạy

python get-pip.py hoặc sudo python get-pip.py nếu bạn chưa đăng nhập bằng thư mục gốc.

Điều này phù hợp với tôi.

Các vấn đề liên quan