Python: không có mô-đun có tên datetime?


56

HĐH: Ubuntu 14.04 LTS

Con trăn: 2.7.6

Cài đặt Gourmet Recipe Manager của tôi đột nhiên ngừng tải. Khi tôi chạy nó trong cửa sổ terminal, tôi nhận được thông tin sau khi kết thúc quá trình truy nguyên:

import datetime as dt
ImportError: No module named datetime

Theo như tôi có thể nói, không có gì thay đổi và bản cài đặt Python của tôi đã được cập nhật. Nó chỉ đơn giản là nghỉ làm ngày hôm qua. Tôi chắc chắn đánh giá cao một cách tiếp cận tốt để chẩn đoán và khắc phục vấn đề này!

Cập nhật: cảm ơn tất cả những người đã trả lời!

Tim, tôi xin lỗi nếu tôi hỏi sai câu hỏi này. Hãy phấn đấu để trở thành một chàng trai mới chỉ cần theo các liên kết từ trang web Ubuntu.

TheSchwa, tôi đã thử đề xuất của bạn và nhận được thông báo lỗi tương tự như trên.

muru, gói dường như được cài đặt, nhưng tôi không biết nó có được cài đặt / cấu hình đúng không. Làm thế nào tôi có thể tìm ra?

Tôi xin lỗi vì tất cả các câu hỏi, nhưng tôi là một anh chàng RedHat đã xa Linux một thời gian. Tất cả những thứ apt / dpkg là mới đối với tôi.


Mặc dù đây là (chỉ) về chủ đề ở đây, bạn có thể nhận được phản hồi tốt hơn về Stack Overflow . Ngoài ra, tôi không thể tái tạo nó. Không có lỗi gì cả, trên cùng một thiết lập như bạn ...
Tim

Điều gì xảy ra nếu bạn thử import datetimetrong trình thông dịch python? Bạn có thể bắt đầu trình thông dịch bằng cách mở một thiết bị đầu cuối và thực thi python. Bạn có thể để nó với Ctrl+d.
TheSchwa

Theo dpkg -S $(python -c "import datetime; print datetime.__file__")mô-đun datetime là từ libpython2.7-stdlibgói. Gói đó có được cài đặt đúng không? Bạn có thể thử cài đặt lại nó?
muru

Được rồi, vậy tập tin cụ thể là /usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.sobạn có tập tin đó không? Ngoài ra bạn có thấy /usr/lib/python2.7/lib-dynloadđược liệt kê trong đầu ra từ echo $(python -c "import sys; print sys.path")? Btw hệ thống Stack Exchange không thực sự thông báo cho người bình luận khi bạn chỉnh sửa bài đăng của mình; vì vậy, ít nhất luôn luôn đăng một bình luận nhanh, chẳng hạn như "Câu hỏi được cập nhật với thông tin" để chúng tôi nhận được thông báo yêu cầu chúng tôi kiểm tra lại :)
TheSchwa

Câu hỏi cập nhật với thông tin. Cảm ơn, TheSchwa! Câu trả lời của tôi là không và có, tương ứng. Bây giờ, tôi có thể lấy bản sao mới của datetime.x86_64-linux.gnu.so ở đâu? :)
Joe

Câu trả lời:


84

Điều này chỉ xảy ra với tôi sau bản cập nhật 14.10 và dường như là do môi trường ảo của tôi có các bản sao cũ /usr/bin/python2.7- không giống như bản nhị phân mới - không bao gồm tích datetimehợp và do đó, họ gặp lỗi khi không thể tìm thấy nó trên đĩa ở bất cứ đâu . Trình thông dịch mới dường như nhập nó mà không có bất kỳ tệp I / O nào (hãy thử chạy nó bên dưới straceđể kiểm tra).

Tôi đã sửa từng môi trường ảo bằng cách kích hoạt nó và chạy:

$ cp /usr/bin/python2.7 $(which python2.7)

5
Cảm ơn nhưng tại sao điều này lại cần thiết? Phá vỡ con trăn trên một bản nâng cấp là thứ khó chịu.
Samantha Atkins

1
Tôi đã thử các câu trả lời khác trên trang này và chúng không hoạt động, nhưng câu này đã làm.
Michael Terry

2
cp: '/usr/bin/python2.7' and '/usr/bin/python2.7' are the same filenhưng lỗi vẫn tồn tại
Umair

@Umair Có thể có điều gì đó không đúng với activatetập lệnh của bạn , trong trường hợp đó - thông thường, sau khi kích hoạt, which python2.7sẽ hiển thị đường dẫn tới Python của môi trường, không trả lại đường dẫn tới Python hệ thống.
Brandon Rhodes

29

Bạn chỉ có thể khởi tạo lại virtualenv bằng cách:

cd $VIRTUAL_ENV
virtualenv .

2
Lưu ý rằng nó nên virtualenv .thay vìvirtualenv ,
icyrock.com 12/12/14

4
Câu trả lời này có vẻ tốt hơn so với câu trả lời của Brandon Rhodes.
azurkin

Nếu một người sử dụng virtualenvwrapper có thể làm cd $VIRTUAL_ENV.
maciek

OSError: [Errno 1] Operation not permitted
Cerin

@Cerin, tôi gặp vấn đề tương tự, tôi chỉ sử dụng một sudo virtualenv .để cài đặt Python thực thi mới, và sau đó thay đổi lại toàn bộ $VIRTUAL_ENVthành chủ sở hữu thư mục chính xác.
iMitwe

29

Nếu bạn đang cố gắng sử dụng letencrypt sau khi nâng cấp, giải pháp này hoạt động với tôi diễn đàn letencrypt - Không thể sử dụng tự động nhập: lỗi: không có mô-đun có tên io / 2345/3

Tôi chỉ phải xóa cái này:

rm ~/.local/share/letsencrypt -R

8
Tôi cũng phải rm -rf /opt/eff.orglàm cho nó hoạt động
CharlyDelta

7
xóa /opt/eff.org đã sửa nó
Margus Pala

1
tương tự đối với tôi ... /opt/eff.org
cljk

2

Tôi gặp vấn đề tương tự và cuối cùng quyết định đó phải là AWS CLI vì tôi nhận thấy rằng nó có thư mục python riêng. Vì vậy, tôi đã gỡ cài đặt AWS CLI và cài đặt lại và nó đã khắc phục vấn đề:

sudo pip uninstall awscli

sudo pip install awscli


0

Vì tôi đã tìm thấy một số thay đổi trong 14.04, vì vậy bạn cần thực hiện việc này từ root:

Chỉ dành cho datetime:


ln -s /usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/datetime.so

Đối với tất cả các mô-đun:


ln -s /usr/lib/python2.7/lib-dynload/audioop.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/audioop.so
ln -s /usr/lib/python2.7/lib-dynload/_bsddb.x86_64-linux-gnu.so                        /usr/lib/python2.7/lib-dynload/_bsddb.so
ln -s /usr/lib/python2.7/lib-dynload/bz2.x86_64-linux-gnu.so                           /usr/lib/python2.7/lib-dynload/bz2.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_cn.x86_64-linux-gnu.so                    /usr/lib/python2.7/lib-dynload/_codecs_cn.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_hk.x86_64-linux-gnu.so                    /usr/lib/python2.7/lib-dynload/_codecs_hk.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_iso2022.x86_64-linux-gnu.so               /usr/lib/python2.7/lib-dynload/_codecs_iso2022.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_jp.x86_64-linux-gnu.so                    /usr/lib/python2.7/lib-dynload/_codecs_jp.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_kr.x86_64-linux-gnu.so                    /usr/lib/python2.7/lib-dynload/_codecs_kr.so
ln -s /usr/lib/python2.7/lib-dynload/_codecs_tw.x86_64-linux-gnu.so                    /usr/lib/python2.7/lib-dynload/_codecs_tw.so
ln -s /usr/lib/python2.7/lib-dynload/crypt.x86_64-linux-gnu.so                         /usr/lib/python2.7/lib-dynload/crypt.so
ln -s /usr/lib/python2.7/lib-dynload/_csv.x86_64-linux-gnu.so                          /usr/lib/python2.7/lib-dynload/_csv.so
ln -s /usr/lib/python2.7/lib-dynload/_ctypes_test.x86_64-linux-gnu.so                  /usr/lib/python2.7/lib-dynload/_ctypes_test.so
ln -s /usr/lib/python2.7/lib-dynload/_ctypes.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/_ctypes.so
ln -s /usr/lib/python2.7/lib-dynload/_curses_panel.x86_64-linux-gnu.so                 /usr/lib/python2.7/lib-dynload/_curses_panel.so
ln -s /usr/lib/python2.7/lib-dynload/_curses.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/_curses.so
ln -s /usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/datetime.so
ln -s /usr/lib/python2.7/lib-dynload/dbm.x86_64-linux-gnu.so                           /usr/lib/python2.7/lib-dynload/dbm.so
ln -s /usr/lib/python2.7/lib-dynload/_elementtree.x86_64-linux-gnu.so                  /usr/lib/python2.7/lib-dynload/_elementtree.so
ln -s /usr/lib/python2.7/lib-dynload/fpectl.x86_64-linux-gnu.so                        /usr/lib/python2.7/lib-dynload/fpectl.so
ln -s /usr/lib/python2.7/lib-dynload/future_builtins.x86_64-linux-gnu.so               /usr/lib/python2.7/lib-dynload/future_builtins.so
ln -s /usr/lib/python2.7/lib-dynload/_hashlib.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/_hashlib.so
ln -s /usr/lib/python2.7/lib-dynload/_hotshot.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/_hotshot.so
ln -s /usr/lib/python2.7/lib-dynload/_json.x86_64-linux-gnu.so                         /usr/lib/python2.7/lib-dynload/_json.so
ln -s /usr/lib/python2.7/lib-dynload/linuxaudiodev.x86_64-linux-gnu.so                 /usr/lib/python2.7/lib-dynload/linuxaudiodev.so
ln -s /usr/lib/python2.7/lib-dynload/_lsprof.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/_lsprof.so
ln -s /usr/lib/python2.7/lib-dynload/mmap.x86_64-linux-gnu.so                          /usr/lib/python2.7/lib-dynload/mmap.so
ln -s /usr/lib/python2.7/lib-dynload/_multibytecodec.x86_64-linux-gnu.so               /usr/lib/python2.7/lib-dynload/_multibytecodec.so
ln -s /usr/lib/python2.7/lib-dynload/_multiprocessing.x86_64-linux-gnu.so              /usr/lib/python2.7/lib-dynload/_multiprocessing.so
ln -s /usr/lib/python2.7/lib-dynload/nis.x86_64-linux-gnu.so                           /usr/lib/python2.7/lib-dynload/nis.so
ln -s /usr/lib/python2.7/lib-dynload/ossaudiodev.x86_64-linux-gnu.so                   /usr/lib/python2.7/lib-dynload/ossaudiodev.so
ln -s /usr/lib/python2.7/lib-dynload/parser.x86_64-linux-gnu.so                        /usr/lib/python2.7/lib-dynload/parser.so
ln -s /usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/pyexpat.so
ln -s /usr/lib/python2.7/lib-dynload/readline.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/readline.so
ln -s /usr/lib/python2.7/lib-dynload/resource.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/resource.so
ln -s /usr/lib/python2.7/lib-dynload/_sqlite3.x86_64-linux-gnu.so                      /usr/lib/python2.7/lib-dynload/_sqlite3.so
ln -s /usr/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so                          /usr/lib/python2.7/lib-dynload/_ssl.so
ln -s /usr/lib/python2.7/lib-dynload/termios.x86_64-linux-gnu.so                       /usr/lib/python2.7/lib-dynload/termios.so
ln -s /usr/lib/python2.7/lib-dynload/_testcapi.x86_64-linux-gnu.so                     /usr/lib/python2.7/lib-dynload/_testcapi.so

Ngoài ra nếu bạn sử dụng bản sao ảo env

cp $(which python2.7) /opt/graphite/bin/python

để env của bạn.


3
Tôi đã nâng cấp lên 14.04 và không cần thực hiện bất kỳ liên kết tượng trưng nào. Bạn có thể cung cấp bất kỳ bằng chứng nào cho thấy việc làm rối hệ thống libs như thế này là cần thiết và không thể tránh được không?
Andrea Lazzarotto

0

Tôi đã gặp lỗi khi nâng cấp từ Ubuntu 14.04 lên 14.10. Tôi đã tạo lại virtualenv của tôi và vấn đề đã biến mất. Vì vậy, nếu bạn đang làm việc với virtualenv, bạn nên tạo lại nó.

Tuy nhiên nếu bạn không, tôi cho rằng việc cài đặt lại dự án của bạn sẽ hoạt động. Đừng chạm vào bất kỳ thư viện hệ thống! Nó có thể hoạt động trong thời gian này, nhưng có khả năng sẽ dẫn đến các vấn đề với người khác.


0

Điều này xảy ra sau một số nâng cấp Ubuntu. Giải pháp yêu thích của tôi là

$ virtualenv --no-site-packages path/to/virtualenv/dir

Điều này cập nhật mọi thứ cần thiết mà không cần gỡ bỏ các gói đã được cài đặt.

Nếu bạn có nhiều virtualenv để cập nhật, bạn có thể sử dụng xargs:

$ ls ~/directory/with/virtualenvs | xargs -L1 virtualenv --no-site-packages
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.