Portál AbcLinuxu, 9. května 2025 19:47
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.
#!/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.