ฉันกำลังพยายามเรียกใช้สคริปต์ python 2.7 จาก Iron python โดยใช้ subprocess.call
กระบวนการที่เรียกใช้ใช้การนำเข้าที่ไม่รองรับใน IronPython เช่น scikit-learn
และ requests
ขณะนี้ฉันกำลังพยายามเรียกใช้สคริปต์ python 2.7 โดยใช้คำสั่งนี้:
sub_ret_val = subprocess.call("C:/Documents and Settings/avishay/workspace/BursaProject_V1_31/brainManager_toFile.py", shell = True, stderr = subprocess.STDOUT)
แต่ฉันได้รับ:
LookupError: การเข้ารหัสที่ไม่รู้จัก: idna
ตอนนี้สคริปต์นี้ทำงานได้ดีหากฉันรันจากเชลล์ windows หรือจากสภาพแวดล้อม eclipse pydev อะไรคือความแตกต่างระหว่างการรันจากเชลล์กับการรันจาก subprocess.call
ทำให้มันล้มเหลว?
ขอบคุณ
---แก้ไข---
ดูเหมือนว่าฉันไม่สามารถนำเข้า encodings.idna ได้เช่นกัน:
ImportError: ไม่มีโมดูลชื่อ idna
ซึ่งแปลกมาก... การพิมพ์ sys.path
แสดงว่า c:\\Python27\\Lib
อยู่ที่นั่น และไฟล์ idna.py อยู่ในไดเร็กทอรีการเข้ารหัส ... การนำเข้าไม่ทำงานได้อย่างไร ???
---แก้ไขเพิ่มเติมครับ---
ฉันพบวิธีหนึ่งในการแก้ไขปัญหาแล้ว - การเริ่มสคริปต์ IronPython จากเชลล์หลาม - และทุกอย่างทำงานได้ดี ฉันยังไม่มีความคิดว่าทำไมการเรียกใช้ล่าม python 2.7 จาก IronPython จึงรบกวนโมดูลภายในของ python 2.7 ... PYTHONPATH รวมเส้นทางไปยังโมดูลเหล่านั้นด้วย ดังนั้นฉันจะซาบซึ้งอย่างยิ่งกับข้อมูลเชิงลึกเกี่ยวกับสิ่งที่เกิดขึ้นภายใต้ประทุน
print u'abc'.encode('idna')
ลงในไฟล์child.py
แล้วเรียกจากparent.py
:import subprocess; subprocess.call([r'c:\Python27\python.exe', 'child.py'])
ขั้นแรกให้รันparent.py
โดยใช้ CPython (เพื่อให้แน่ใจว่าทำงานได้ตามที่คาดไว้) จากนั้นรันparent.py
โดยใช้ IronPython และดูว่าจะทำให้เกิดปัญหาอีกครั้งหรือไม่ - person jfs   schedule 25.04.2013parent.py
ด้วย IronPython... - person WeaselFox   schedule 26.04.2013