วันพุธที่ 1 เมษายน พ.ศ. 2558

pip install error registry บน windows (Python 2.7.9)

ผู้เขียนได้ติดตั้ง pip เสร็จสิ้นเรียบร้อยแล้ว หลังจากนั้นจะติดตั้ง package อื่นๆต่อ (ในที่นี้ขอยกตัวอย่างเป็น pyramid)
แต่ปรากฏว่าเมื่อติดตั้งโดยใช้ pip โดยคำสั่งด้านล่างก็เกิด Error ฟ้องขึ้น

c:\> python -m pip install pyramid

โดยฟ้อง Error ประมาณว่า

File "C:\Python27\lib\mimetypes.py", line 263, in read_windows_registry
with _winreg.OpenKey(hkcr, subkeyname) as subkey:
TypeError: must be string without null bytes or None, not str

เนื่องจาก python มีปัญหากับ Registry บางตัวบน Windows 64 bit
วิธีการแก้ไขมีหลายวิธี ผู้เขียนจึงนำเสนอวิธีที่ผู้เขียนใช้ได้ผล
ซึ่งวิธีอื่นๆสามารถไปอ่านเพิ่มเติมได้ที่ลิง้ค์ข้างล่าง

Thank you for the solution from
http://www.swarley.me.uk/blog/2014/04/23/python-pip-and-windows-registry-corruption/

วิธีการแก้ไขคือ ให้เปิดไฟล์ python27\Lib\mimetypes.py ขึ้นมาแก้ไข
โดยเพิ่มบรรทัดที่มี #new อยู่ข้างหลัง ตามโค้ดด้านล่าง

with _winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT, '') as hkcr:
    for subkeyname in enum_types(hkcr):
        try:
            if '\0' in subkeyname: # new
                print "Skipping bad key: %s" % subkeyname # new
                continue # new
            with _winreg.OpenKey(hkcr, subkeyname) as subkey:

หลังจากนั้นก็ Save แล้วก็ลอง install ใหม่ดู
จะพบว่า หลังจากติดตั้งจะมีการ Skip key ไปบางส่วนทำให้ติดตั้งได้ ดังรูป


ก็จะติดตั้งได้เสร็จสิ้นเรียบร้อย

ไม่มีความคิดเห็น:

แสดงความคิดเห็น