/ / Volanie skriptu python z skriptu Bash - python, bash, import

Volanie skriptu python z skriptu Bash - python, bash, import

Snažím sa zavolať pytónový skript z bashscript. Chybám pri importovaní iba ak sa pokúsim spustiť .py z bash skriptu. Ak bežím s python myscript.py všetko je v poriadku. Toto je môj bash skript:

while true; do
python script.py

echo "Restarting...";
sleep 3;
done

Chyba, ktorú dostávam:

Traceback (most recent call last):
File "script.py", line 39, in <module>
from pokemongo_bot import logger
File "/Users/Paolo/Downloads/folder/t/__init__.py", line 4, in <module>
import googlemaps
ImportError: No module named googlemaps

odpovede:

3 pre odpoveď č. 1

Tento príbeh, ktorý nie je vo vašej otázke, je viac. Vaša premenná PYTHONPATH sa niekde zmení na cestu.
Vložte niekoľko rýchlych testovacích línií:

v bash:

echo $PYTHONPATH

vo vašom pytóne:

import os
print os.environ["PYTHONPATH"]

V určitom okamihu sa stratila cesta k googlemapám.


1 pre odpoveď č. 2

Váš problém je v skripte sám, váš bash kód je OK !. Ak nemáte problém so spustením python scrip.py od bash priamo, mali by ste otestovať, ak používate rovnaký tlmočník pre obe hovory. Môžete skontrolovať čiarkou shebang v skripte python, je to napríklad prvý riadok v súbore #!/usr/bin/env python alebo #!/usr/bin/python a porovnajte ho s výstupom which python príkaz, ak je výstup iný, pokúste sa zmeniť alebo pridať linku shebang do súboru. Ak voláte priamo súbor v bash ./some_script.py bash číta prvý riadok a ak je to shebang line, vykoná špecifický príkaz pre súbor. Môj názor je, že ak používate dvoch rôznych tlmočníkov na volanie súboru priamo s python script.py a nepriamo ./script.py jeden z nich nemusí mať správne moduly pythonu.

Ako kód:

$ which python
/usr/local/bin/python

Takže druhý riadok je cesta pre vášho tlmočníka, aby si vytvoril shebang z neho písať v prvom riadku vášho súboru skriptu.

#!/usr/local/bin/python