Python: ไม่มีโมดูลชื่อ datetime?


56

ระบบปฏิบัติการ: Ubuntu 14.04 LTS

Python: 2.7.6

การติดตั้งตัวจัดการสูตรอาหารของฉันหยุดการโหลดในทันใด เมื่อฉันรันในหน้าต่างเทอร์มินัลฉันจะได้สิ่งต่อไปนี้ในตอนท้ายของการย้อนกลับ:

import datetime as dt
ImportError: No module named datetime

เท่าที่ฉันสามารถบอกได้ว่าไม่มีอะไรเปลี่ยนแปลงและการติดตั้ง Python ของฉันเป็นรุ่นล่าสุด มันเพิ่งเลิกทำงานเมื่อวานนี้ ฉันขอขอบคุณแนวทางที่ดีในการวินิจฉัยและแก้ไขปัญหานี้!

Update: ขอบคุณทุกคนที่ตอบกลับ!

ทิมฉันขอโทษถ้าฉันถามคำถามนี้ผิดที่ กรุณาชอล์กมันเพื่อเป็นคนใหม่เพียงแค่ติดตามลิงก์จากเว็บไซต์อูบุนตู

TheSchwa ฉันลองข้อเสนอแนะของคุณและได้รับข้อความแสดงข้อผิดพลาดเช่นเดียวกับข้างต้น

muru ดูเหมือนว่าจะติดตั้งแพ็คเกจ แต่ฉันไม่รู้ว่าติดตั้ง / กำหนดค่าไว้ถูกต้องหรือไม่ ฉันจะทราบได้อย่างไร

ฉันขอโทษสำหรับคำถามทั้งหมด แต่ฉันเป็นผู้ชาย RedHat เก่าที่อยู่ห่างจาก Linux มาระยะหนึ่งแล้ว สิ่งที่ฉลาด / dpkg ทั้งหมดเป็นของใหม่สำหรับฉัน


ขณะนี้เป็น (แค่) ในหัวข้อที่นี่คุณจะได้รับการตอบสนองที่ดีขึ้นในกองมากเกิน นอกจากนี้ฉันไม่สามารถทำซ้ำได้ ไม่มีข้อผิดพลาดเลยในการตั้งค่าเช่นเดียวกับคุณ ...
ทิม

จะเกิดอะไรขึ้นถ้าคุณลองimport datetimeใช้ล่ามหลาม? pythonคุณสามารถเริ่มต้นล่ามโดยการเปิดสถานีและการดำเนินงาน Ctrl+dคุณสามารถปล่อยให้มันด้วย
TheSchwa

ตามdpkg -S $(python -c "import datetime; print datetime.__file__")ที่โมดูล datetime มาจากlibpython2.7-stdlibแพ็กเกจ ติดตั้งแพคเกจนั้นถูกต้องหรือไม่ คุณลองติดตั้งใหม่ได้ไหม
muru

ตกลงไฟล์ที่เฉพาะเจาะจงคือ/usr/lib/python2.7/lib-dynload/datetime.x86_64-linux-gnu.soคุณมีไฟล์นั้นไหม คุณเห็น/usr/lib/python2.7/lib-dynloadรายการในผลลัพธ์ด้วยecho $(python -c "import sys; print sys.path")หรือไม่ Btw ระบบ Stack Exchange ไม่ได้แจ้งผู้แสดงความคิดเห็นเมื่อคุณแก้ไขโพสต์ เพื่อที่อย่างน้อยที่สุดเสมอแสดงความคิดเห็นได้อย่างรวดเร็วเช่น "คำถามปรับปรุงด้วยข้อมูล" เพื่อให้เราได้รับการแจ้งเตือนบอกให้เรากลับไปตรวจสอบ :)
TheSchwa

อัปเดตคำถามพร้อมข้อมูล ขอบคุณ TheSchwa! คำตอบของฉันคือไม่และใช่ตามลำดับ ตอนนี้ฉันจะหาสำเนาใหม่ของ datetime.x86_64-linux.gnu.so ได้จากที่ไหน :)
โจ

คำตอบ:


84

สิ่งนี้เพิ่งเกิดขึ้นกับฉันหลังจากการอัพเดท 14.10 และดูเหมือนว่าเป็นเพราะสภาพแวดล้อมเสมือนจริงของฉันมีสำเนาเก่า ๆ/usr/bin/python2.7- ซึ่งไม่เหมือนกับไบนารีใหม่ - ไม่ได้มีdatetimeในตัวและได้รับข้อผิดพลาดเมื่อพวกเขาไม่พบมันบนดิสก์ . ล่ามใหม่ดูเหมือนจะนำเข้าโดยไม่มีไฟล์ I / O ใด ๆ (ลองเรียกใช้ภายใต้straceการตรวจสอบ)

ฉันแก้ไขแต่ละสภาพแวดล้อมเสมือนโดยเปิดใช้งานและเรียกใช้:

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

5
ขอบคุณ แต่ทำไมจึงจำเป็น การทำลายหลามในการอัปเกรดเป็นสิ่งที่น่ารังเกียจ
Samantha Atkins

1
ฉันลองคำตอบอื่น ๆ ในหน้านี้และพวกเขาไม่ทำงาน แต่อันนี้ทำ
Michael Terry

2
มีcp: '/usr/bin/python2.7' and '/usr/bin/python2.7' are the same fileแต่ข้อผิดพลาดยังคงมีอยู่
Umair

@Umair อาจมีบางอย่างผิดปกติกับactivateสคริปต์ของคุณในกรณีนี้ - โดยปกติหลังจากเปิดใช้งานwhich python2.7จะแสดงพา ธ ไปยัง Python ของสภาพแวดล้อมไม่ใช่คืนพา ธ ไปยังระบบ Python
แบรนดอนโรดส์

29

คุณสามารถเริ่มต้น virtualenv ใหม่ได้โดย:

cd $VIRTUAL_ENV
virtualenv .

2
โปรดทราบว่ามันควรจะเป็นvirtualenv .แทนvirtualenv ,
icyrock.com

4
คำตอบนี้ดูเหมือนจะดีกว่าคำตอบของแบรนดอนโรดส์
azurkin

ถ้าใครใช้ virtualenvwrapper cd $VIRTUAL_ENVสามารถทำได้
maciek

OSError: [Errno 1] Operation not permitted
Cerin

@Cerin ฉันมีปัญหาเดียวกันฉันเพิ่งใช้ a sudo virtualenv .เพื่อติดตั้งโปรแกรม Python ใหม่แล้วเปลี่ยนกลับ$VIRTUAL_ENVไปเป็นเจ้าของไดเรกทอรีที่ถูกต้อง
iMitwe

29

หากคุณได้รับสิ่งนี้พยายามที่จะใช้ allowencrypt หลังการอัพเกรดวิธีนี้ใช้ได้กับฉันletencrypt ฟอรัม - ไม่สามารถใช้การนำเข้าอัตโนมัติ: ข้อผิดพลาด: ไม่มีโมดูลชื่อ io / 2345/3

ฉันต้องลบสิ่งนี้:

rm ~/.local/share/letsencrypt -R

8
ฉันยังต้องrm -rf /opt/eff.orgทำให้มันทำงาน
CharlyDelta

7
การลบ /opt/eff.org แก้ไข
Margus Pala

1
เหมือนกันสำหรับฉัน ... /opt/eff.org
cljk

2

ฉันมีปัญหาเดียวกันและในที่สุดก็ตัดสินใจว่าจะต้องเป็น AWS CLI เพราะฉันสังเกตเห็นว่ามันมีไดเรกทอรีหลามของตัวเอง ดังนั้นฉันจึงถอนการติดตั้ง AWS CLI และติดตั้งใหม่และแก้ไขปัญหา:

sudo pip uninstall awscli

sudo pip install awscli


0

ในขณะที่ฉันพบการเปลี่ยนแปลงบางอย่างใน 14.04 ดังนั้นคุณต้องทำจากราก:

สำหรับ datetime เท่านั้น:


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/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

นอกจากนี้ถ้าคุณใช้การจำลอง env เสมือน

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

เพื่อ env ของคุณ


3
ฉันอัปเกรดเป็น 14.04 และไม่จำเป็นต้องทำการเชื่อมโยงใด ๆ คุณสามารถให้หลักฐานใด ๆ ที่ทำให้ระบบ libs แบบนี้มีความจำเป็นและไม่สามารถหลีกเลี่ยงได้?
Andrea Lazzarotto

0

ฉันได้รับข้อผิดพลาดเมื่อฉันอัพเกรดจาก Ubuntu 14.04 เป็น 14.10 ฉันสร้าง virtualenv ของฉันขึ้นใหม่และปัญหาหายไป ดังนั้นหากคุณทำงานกับ virtualenv คุณควรสร้างมันขึ้นมาใหม่

อย่างไรก็ตามถ้าคุณทำไม่ได้ฉันคิดว่าการติดตั้งโครงการของคุณจะใช้งานได้ อย่าแตะไลบรารีระบบใด ๆ ! สามารถทำงานได้ในขณะนี้ แต่อาจนำไปสู่ปัญหากับผู้อื่น


0

สิ่งนี้เกิดขึ้นหลังจากการอัพเกรด Ubuntu บางอย่าง ทางออกที่ฉันชอบคือ

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

อัปเดตทุกอย่างที่จำเป็นโดยไม่ลบแพ็คเกจที่ติดตั้งไว้

หากคุณมี virtualenvs มากมายที่จะอัพเดทคุณสามารถใช้xargs:

$ ls ~/directory/with/virtualenvs | xargs -L1 virtualenv --no-site-packages
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.