Cześć, mam pytnie:
napisałem prosty program w pythonie w IDE Pycharm i tam dziala prawodiłowo, gdy odpalam go z poziomu CMD dostaje info ze nie znaleziono modułu, który jest i w Pycharmie go widzi normlanie. Co moze byc przyczyna ze w CMD nie jest widziany modul? pracuje na windowsie
Ale co to za moduł? Jak wygląda import? Jak wygląda struktura pakietów/katalogów? Pycharm automatycznie dodaje do patha source rooty projektu.
struktura wyglada tak:
testy
test1
__init__.py
testowanie1.py
test2
testowanie2.py
W pliku testowanie2 chce zaimportowac funkcje z pliku testowanie1.py
W Pycharm dziala to prawidlowo, a z consoli jak odpalam skrypt to dostaje blad :
Traceback (most recent call last):
File "testowanie2.py", line 1, in <module>
import test1.testowanie1 as t
ImportError: No module named test1.testowanie1
Da sie jakos dodac ten plik? probowalem robic sys.append i dodawac go, albo do zmiennej srodowiskowej path ale dalej nie widzi go z poziomu CMD
testy
test1
__init__.py
testowanie1.py
test2
testowanie2.py
o powinno tak byc, ze glowny folder to testy, on zawiera w sobie foldery test1 i test2 i folder test1 zawiera init i testowanie1.py a folder 2 zawiera testowanie2.py
Użyj relatywnego importowania: https://docs.python.org/2.5/whatsnew/pep-328.html
Dobrze by było umieścić pusty plik __init__.py
w każdym folderze projektu (oprócz głównego).
Relatywne importy z tego co pamiętam można sobie odpuścić, jeśli instancja interpretera była uruchomiona w głównym katalogu aplikacji. Ale jak Ty sobie odpalasz z konsoli prawdopodobnie będąc w katalogu "test2", to zwykłe import test1.testowanie1
nie wystarczy.
Niestety otrzymuje taki blad: ValueError: Attempted relative import in non-package
Tak, odpalam bedac w katalogu test2, wiesz moze jak to inaczej zrobic?
Sprobowalem jeszcze uruchomic bedac w folderze C:\Python27 i tam uzylem polecenia python i sciezka do skryptu ale dalej to samo :/ ( ze nie widzi importu)
import sys
sys.path.append("path to directory with my_module")
from my_module import my_function
Takie coś Ci nie działa?
Niestety nie dziala, nie widzi modulu, natomiast jak stworze plik w glownym folderze : testy i tam zaimportuje ktores z tych zagniezdzownych testowanie1 lub testowanie2 to dziala i widzi wszystko w pycharm
- z pozioomu CMD i pycharm dziala wszystko wtedy
Jeśli nie działa Ci sys.path.append()
, to Masz coś skopane z systemem/Pythonem albo Robisz jakiś błąd(którego nie widzimy). Whatever, Spróbuj w takim razie znaleźć Environment variables, PYTHONPATH
i tam wpisać ścieżki.
Najprościej to chyba tutaj jakiś virtualenv postawić. Coś w stylu python3 -mvenv VIRTUAL_ENV_NAME
Potem dajesz ./VIRTUAL_ENV_NAME\bin\activate.bat
i kończysz pip install -e .
by zainstalować swój pakiet w wirtualce. Jeśli to nie działa, możesz próbować ręcznie dodać w uruchamianym z konsoli pliku ścieżkę pakietu do PYTHONPATH. Może porównaj na start wynik sys.path()
wykonanego z poziomu PyCharm i z poziomu konsoli.
Podepnę się, jak dodac do virtualenv biblioteki ktore nie da sie zainstalowac pipem, tz trzeba sciagnac ze strony i zainstalowac jak np py2exe . Bo jak chce pipem instalowac to pisze ze wymagana wersja 3.3 lub nowsza, a ja mam python 2.7 i sciagam ze strony wersje dla python2
Tu: https://packaging.python.org/tutorials/installing-packages/ Masz wszystko opisane, plus jeszcze to: https://stackoverflow.com/questions/42494229/how-to-pip-install-a-local-python-package#42533499