ओएसएक्स पर पाइथन 2.6.1 चलाना, CentOS पर तैनात होगा। इस तरह एक कमांड लाइन से लागू किया जा करने के लिए एक पैकेज प्राप्त करना चाहते हैं:एक पायथन पैकेज
$PYTHONPATH/
tst/
__init__.py # empty
__main__.py # below
dep.py # below
निम्नलिखित है फाइलों में:
python [-m] tst
कि के लिए, यहाँ निर्देशिका संरचना बनाई गई है
$ cat tst/__main__.py
from .dep import DepClass
print "Hello there"
$ cat tst/dep.py
class DepClass(object):
pass
$
हालांकि, अजगर मुझे नैदानिक परस्पर विरोधी देता है:
$ python -m tst
/usr/bin/python: tst is a package and cannot be directly executed
ठीक है, इसलिए इसे एक पैकेज के रूप में पहचाना जाता है। तो मुझे इसे एक स्क्रिप्ट के रूप में चलाने में सक्षम होना चाहिए? यह इस बिंदु मैं खो गया हूँ पर __main__
है ...
$ python tst
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/runpy.py", line 121, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/runpy.py", line 34, in _run_code
exec code in run_globals
File "/Users/vdidenko/Code/emi/tst/__main__.py", line 1, in <module>
from .dep import DepClass
ValueError: Attempted relative import in non-package
। non-package
क्यों? और फिर कोड को कैसे व्यवस्थित करें?
[-एम], विभिन्न समाधान के साथ चलते समय एक डुप्ली, अलग-अलग प्रतिक्रिया नहीं। हालांकि करीब लगता है। यह समस्या चलते समय '.__ main__' जोड़ने में विफल रही, दूसरे ने इसे ठीक से जोड़ा। –