आपके द्वारा चलाए जा रहे पायथन बाइनरी में torch
स्थापित नहीं है। यह मॉड्यूल खोज पथ पर torch
नाम के एक निर्देशिका है, और यह रूप में एक namespace package व्यवहार किया जाता है:
$ pwd
/some/path
$ python3 -c 'import torch; print(torch); print(torch.__path__)'
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'torch'
$ mkdir torch
$ python3 -c 'import torch; print(torch); print(torch.__path__)'
<module 'torch' (namespace)>
_NamespacePath(['/some/path/torch'])
उस में एक __init__.py
फ़ाइल वर्तमान के बिना किसी भी निर्देशिका, अपने मॉड्यूल खोज पथ पर स्थित है, माना जाएगा एक नामस्थान के रूप में, प्रदान किए गए किसी भी अन्य पायथन मॉड्यूल या उस नाम से संकुल खोज पथ के साथ कहीं और पाए जाते हैं।
इसका मतलब यह है कि अगर torch
अपने अजगर द्विआधारी के लिए स्थापित किया गया था, यह अगर वहाँ एक स्थानीय torch
निर्देशिका है कोई फर्क नहीं पड़ता:
$ ls -ld torch/
drwxr-xr-x 2 mjpieters users 68 Nov 23 13:57 torch/
$ mkdir -p additional_path/torch/
$ touch additional_path/torch/__init__.py
$ PYTHONPATH="./additional_path" python3 -c 'import os.path as p, sys; print(*(t for t in (p.join(e, "torch") for e in sys.path) if p.exists(t)), sep="\n")'
torch
/some/path/additional_path/torch
$ PYTHONPATH="./additional_path" python3 -c 'import torch; print(torch); print(torch.__path__)'
<module 'torch' from '/some/path/additional_path/torch/__init__.py'>
['/some/path/additional_path/torch']
ऊपर से पता चलता है कि sys.path
सूचियों torch
निर्देशिका पहले, additional_path/torch
द्वारा पीछा किया , लेकिन जब आप इसे आयात करने का प्रयास करते हैं तो बाद वाले को torch
मॉड्यूल के रूप में लोड किया जाता है। ऐसा इसलिए है क्योंकि नामस्थान पैकेज लोड करने से पहले पायथन शीर्ष-स्तर मॉड्यूल और पैकेज को प्राथमिकता देता है।
आपको अपने वर्तमान पायथन बाइनरी के लिए सही ढंग से मशाल स्थापित करने की आवश्यकता है, project homepage देखें; जब pip
का उपयोग कर आप के बजाय -m
स्विच के साथ अजगर द्विआधारी का उपयोग करना चाहते हो सकता है:
python3.5 -m pip install http://download.pytorch.org/whl/cu80/torch-0.2.0.post3-cp35-cp35m-manylinux1_x86_64.whl
python3.5 -m pip install torchvision
तो pip3
मुखपृष्ठ निर्देश python3.5 -m pip
के साथ प्रयोग की जगह; python3.5
आपके पायथन बाइनरी का पूरा मार्ग भी हो सकता है।
नवीनतम संस्करण के लिए सही download.pytorch.org
यूआरएल का उपयोग करें।
आपको निर्देशिका को अलग-अलग स्थानांतरित करने की आवश्यकता नहीं है, लेकिन यदि आप यह जानना चाहते हैं कि यह कहां स्थित है, तो print(torch.__path__)
का उपयोग करें जैसा मैंने ऊपर दिखाया है।
फिर, ध्यान दें कि यदि आप एक स्थानीय torch
निर्देशिका में एक __init__.py
फ़ाइल है , यह एक नियमित रूप से पैकेज हो जाता है और यह सामान्य site-packages
स्थान में pip
द्वारा इंस्टॉल किए गए पैकेज मुखौटा होगा। यदि आपके पास ऐसा पैकेज है, या स्थानीय torch.py
सिंगल-फ़ाइल मॉड्यूल है, तो आपको उनको नाम बदलने की आवश्यकता है।निदान जानकारी उस मामले में अलग दिखता है:
$ pwd
/some/path
$ python3 -c 'import torch; print(torch); print(torch.__path__)'
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'torch'
$ mkdir torch
$ touch torch/__init__.py # make it a package
$ python3 -c 'import torch; print(torch); print(torch.__path__)'
<module 'torch' from '/some/path/torch/__init__.py'>
['/some/path/torch']
$ rm -rf torch/
$ touch torch.py # make it a module
$ python3 -c 'import torch; print(torch); print(torch.__file__)'
<module 'torch' from '/some/path/torch.py'>
/some/path/torch.py
नोट मतभेद; उपरोक्त नामस्थान पैकेज <module 'name' (namespace)>
का उपयोग करता है, जबकि एक नियमित पैकेज )
, while a plain module uses
`का उपयोग करता है।
ऐसे पैकेज और मॉड्यूल (नामस्थान पैकेज नहीं) पहले पाए जाते हैं और खोज को रोकते हैं। यदि पाया गया पैकेज या मॉड्यूल वह नहीं है जिसे आप चाहते थे, तो आपको उन्हें अलग-अलग स्थानांतरित करने या उनका नाम बदलने की आवश्यकता है।
'>>> मदद (मशाल)' या '>>> torch' या' >>> dir (मशाल) ', आदि यदि आप अधिक जानकारी की तुलना में हमें –
यहाँ यह है है:' पैकेज मशाल पर सहायता: NAME मशाल पैकेज सामग्री फ़ाइल (बिल्ट-इन) (अंत) '' –
>>> मशाल <मॉड्यूल 'मशाल' (नाम स्थान)> '' –