Portál AbcLinuxu, 3. listopadu 2025 22:45
import /root/python/srcfiles/myscript.pyale nefunguje to. Díky za info
Řešení dotazu:
import sys
sys.path.append('/root/python/srcfiles')
import myscript
#!/usr/bin/python nemusíte vkládat. Když spouštíte skripty jako: python somescript.py, není to nutné. Pouze pokud by měl být soubor spustitelní (chmod +x somescript.py), tak je to nutné vložit, aby se vybral interpreter pythonu a ne něčeho jiného.
Přípona .py je pro samotné skripty, které píšete. Přípona .pyc je pro skripty zkompilované do bytecode.
import mymoduleTen module se samozřejmě jenom načte a provede. ;) Proto často potkáte:
if __name__ == "__main__": ...Aby se při importu načetlo, ale nic nespouštělo, dokud si to nezavoláme.
sys.path, najdete tam standardní umístění knihoven. Přidáním cesty do sys.path jen říkáte, kde má python hledat.
Alternativou by bylo někde v /usr/lib/python.../ nebo v jiné ze standardních cest vytvořit symlink: ln -s /root/python/srcfiles
Doporučuji se také podívat na knihovnu importlib.
pořád mi to vypisuje "except (Error)". Co se mu nelíbí ?
soubor start.py
#!/usr/bin/python
try:
import sys
sys.path.append('/root/python/srcfiles')
import myscript.py
jen_test()
except:
print("Error")
sys.exit(1)
else:
print("Success")
sys.exit(0)
soubor myscript.py
def jen_test():
print("jen test")
import myscript.py # Špatně import myscript # SprávněPřed chvílí to psal NN.
Jak psal NN, importuje se bez suffixu .py
import myscript
Pokud chceš psát vlastní moduly, koukni nejdřív do dokumentace
Pak tedy musíš volat funkce modulu takto
myscript.jen_test()
Soubor /root/python/start.py
#!/usr/bin/python
try:
import sys
sys.path.append('/root/python/srcfiles')
import myscript
myscript.jen_test()
except:
print("Error")
sys.exit(1)
else:
print("Success")
sys.exit(0)
#######
soubor /root/python/srcfiles/myscript.py
def jen_test():
print("jen test")
Tak co se mu ještě nelíbí ? Dík
dir(myscript) bez print ve skriptu moc neprozradí. Co se načetlo: print(os.path.abspath(myscript.__file__)) (samozřejmě po import os; absolutně pro jistotu, někteří lidé občas skáčí po fs).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.