Python nie importuje modułu.

Python nie importuje modułu.
DR
  • Rejestracja: dni
  • Ostatnio: dni
0

Napisałem prosty moduł z dwoma funkcjami. Kiedy go zainstaluje w Pythonie w tradycyjny sposób moduł można zaimportować i wszystko działa ale kiedy próbuje zaimportować go w venv pojawia się błąd wskazujący jakoby moduł nie istnieje. Taki błąd pokazuje się gdy próbuje importować z poziomu wiersza poleceń:

Kopiuj
>>Tracebak (most recent call last):
>>File "<stdin>", line 1 in <module>
>>ModuleNotFoundError: No module named ' myprogram'

,a taki z poziomu powłoki shell:

Kopiuj
>>Traceback (most recent call last):
>>File "<pyshell#2>", line 1, in <module>
>>import myprogram
>>ModuleNotFoundError: No module named 'myprogram'

Oczywiście przed zaimportowaniem modułu jest on zainstalowany w venv i instalacja nie wyrzuca żadnych błędów - kończy się powodzeniem. Po wpisaniu komendy pip list moduł jest wymieniony na liście. Jaka może być przyczyna takiego problemu?

superdurszlak
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 2002
0

Co rozumiesz przez tradycyjną instalację modułu?

Kiedy używasz venv, moduł jest zainstalowany w tym samym wirtualnym środowisku, którego używasz, i jak rozumiem to już zweryfikowałeś?

Jeśli możesz, oprócz komunikatu błędu dorzuć jeszcze top-level definicję modułu i jego strukturę, kroki do zreprodukowania, wersję środowisk itd. Pomoże w określeniu przyczyny.

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
0

A na pewno tym samym Pythonem, którym instalowałeś, ruchamiasz program z importem tego modułu?

GO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 358
0

Good morning, czemu nie używasz poetry do tworzenia virutal enviriomentu?

poetry init
poetry add urllib3
poetry shell

po poetry init robisz nowe środowisko, poetry add dodajesz tam jakieś biblioteki, ale dobrze możesz zrobić poetry shell i potem pip install tak jak normalnie.
Po poetry shell, każde wywołanie python script.py to jest przez virtualne środowisko tak samo jakbyś activation script zrobił.

DR
  • Rejestracja: dni
  • Ostatnio: dni
0
superdurszlak napisał(a):

Co rozumiesz przez tradycyjną instalację modułu?

Kiedy używasz venv, moduł jest zainstalowany w tym samym wirtualnym środowisku, którego używasz, i jak rozumiem to już zweryfikowałeś?

Jeśli możesz, oprócz komunikatu błędu dorzuć jeszcze top-level definicję modułu i jego strukturę, kroki do zreprodukowania, wersję środowisk itd. Pomoże w określeniu przyczyny.

Moduł jest zainstalowany w tym samym środowisku wirtualnym, które używam. To jest Python 3.11. Moduł jest bardzo prosty. Wykonuje bardzo proste operacje na łańcuchach. W zasadzie to moduł edukacyjny. Poza venv ten moduł działa, również w Pythonie 3.11 można go zaimportować i nie ma problemu. Zainstalowałem venv bo miałem problem z mysql i mysql jest już ok, a teraz to się wykrzaczyło. Podaje zależności jakie są w venv, którego używam. Moduł vsearch to jest ten z którym jest problem.:

blinker==1.8.2
certifi==2024.8.30
click==8.1.7
colorama==0.4.6
distlib==0.3.9
filelock==3.16.1
Flask==3.0.3
itsdangerous==2.2.0
Jinja2==3.1.4
MarkupSafe==3.0.2
mysql==0.0.3
mysql-connector-python==9.1.0
mysqlclient==2.2.5
packaging==24.1
pipenv==2024.2.0
platformdirs==4.3.6
virtualenv==20.27.0
vsearch==1.1.0
Werkzeug==3.0.6

Napisz ewentualnie co jeszcze mogę przesłać.

DR
  • Rejestracja: dni
  • Ostatnio: dni
0
.GodOfCode. napisał(a):

Good morning, czemu nie używasz poetry do tworzenia virutal enviriomentu?

poetry init
poetry add urllib3
poetry shell

po poetry init robisz nowe środowisko, poetry add dodajesz tam jakieś biblioteki, ale dobrze możesz zrobić poetry shell i potem pip install tak jak normalnie.
Po poetry shell, każde wywołanie python script.py to jest przez virtualne środowisko tak samo jakbyś activation script zrobił.

Dopiero poznaje Pythona więc jestem co nieco "zielony" i się uczę. Na pewno spróbuje.

DR
  • Rejestracja: dni
  • Ostatnio: dni
0
lion137 napisał(a):

A na pewno tym samym Pythonem, którym instalowałeś, ruchamiasz program z importem tego modułu?

No raczej tak. Aktywuje venv, ten w którym instalowałem moduły. Potem z tego poziomu uruchamiam w wierszu poleceń pythona albo shell więc wydaje mi się, że dobrze. W każdym razie jeszcze raz poukładam te instalacje może rzeczywiście gdzieś popełniam błąd ale jestem prawie pewien, że nie.

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
0

A mozesz kod tego modulu udostępnić?

DR
  • Rejestracja: dni
  • Ostatnio: dni
0

Już sobie poradziłem. Pominąłem venv i zainstalowałem do Pytona wszystkie potrzebne moduły od nowa. Jakoś się udało. Nawet mysql connector się o dziwo zainstalował. I działa. Aha usunąłem ścieżkę systemową PATH dla Pythona, którą dodałem jakiś czas temu. W każdym razie dziękuję za podpowiedzi.

superdurszlak
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 2002
0
dretred napisał(a):

Już sobie poradziłem. Pominąłem venv i zainstalowałem do Pytona

Dobrze rozumiem, że zainstalowałeś do globalnego Pythona, zamiast do lokalnego venva?

To jest rozwiązanie na krótką metę, i działa dopóki masz tylko jeden projekt. W dodatku, jeśli ta instalacja Pythona której używasz jest systemowa (na systemową jest pewnie za nowa, ale Linuxy i Mac najczęściej ":jakąś" mają) to może być problem, jak zaczniesz instalować inne wersje bibliotek, do których programy w Twoim systemie mogą mieć zależności.

DR
  • Rejestracja: dni
  • Ostatnio: dni
0
superdurszlak napisał(a):
dretred napisał(a):

Już sobie poradziłem. Pominąłem venv i zainstalowałem do Pytona

Dobrze rozumiem, że zainstalowałeś do globalnego Pythona, zamiast do lokalnego venva?

Tak. Dobrze rozumiesz. To rozwiązanie tymczasowe. Jutro spróbuję to postawić jeszcze raz na venv. Jak pisałem to jest taki projekt edukacyjny więc chce go po prostu skończyć. Mój własny projekt za który się zamierzam później zabrać będę już robił zgodnie ze sztuką no i inne projekty również.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.