• Register

Import modula

+8 votes
815 views
V Jupyter želim importati modul imenovan prvi_modul (2. predavanje). Če napišem samo from moduli import prvi_modul mi Jupyter javi napako. Modul je shranjen na tem mestu C:\Users\Janez\PycharmProjects\pypinm\moduli

Zanima me kako importam željeni modul. Poskusil sem že z ukazom sys.path.append('C:\Users\Janez\PycharmProjects\pypinm\moduli') vendar neuspešno.
asked Oct 19, 2015 by JanJ (2,580 points)
edited Oct 19, 2015 by blaz

3 Answers

+4 votes
 
Best answer

PS: ne pozabiti, da se pod-mape (pod-direktoriji) obnašajo kot moduli, če se v osnovni mapi nahaja datoteko __init__.py (lahko tudi prazna). Glejte druga predavanja kjer se iz pod-mape "moduli" uvozi prvi_modul na način:

from moduli import prvi_modul
answered Oct 19, 2015 by janko.slavic (74,450 points)
selected Oct 20, 2015 by JanJ
Najprej sem poskusil tako kot je zapisano v predavanjih vendar mi je Python vedno javil napako; ImportError: No module named 'moduli'

Nato sem poskusil na način, ki ga je opisal blaz (sem ugotovil, da nisem uporabil 2x backslash), sedaj sem spet poskusil na ta način in uporabil 2x backslash, vendar še vedno ne uspem uvoziti modula.
Sedaj sem opazil še nekaj. In sicer datoteka _init_.py se nahaja v mapi pypinm v kateri je tudi mapa moduli. Bi morda uspelo, če bi datoteko _init_.py premaknil v mapo moduli in potem poskušal priklicati prvi_modul s pomočjo ukaza import prvi_modul from moduli?
Pozdravljeni!

1. v kateri mapi se nahajate (recimo, da je to "pypinm")?
preverite z:
import os
os.getcwd()

2. ali imate "pypinm" pod-mapo "moduli"

3. ali imate "pypinm" prazno datoteko "__init__.py" ?

če zgoraj zapisano drži, potem bi import moral biti:
from moduli import prvi_modul

PRosim za komentar.
PS: preverite še verzijo Pythona.

import sys
sys.version()

če imate namreč (zastarelo:)) verzijo 2, se obnaša malo drugače...
Pozdravljeni,

1. Nahajam se v mapi :C/Users/Janez

2. Mape si sledijo tako: C:\Users\Janez\PycharmProjects\pypinm\moduli

3. V pypinm je prazna datoteka _init_.py

Ko vtipkam ukaz from moduli import prvi_modul Python pravi da ime moduli ni definirano
http://prntscr.com/8t498n

Verzija Pythona in Notebooka: http://prntscr.com/8t47w0

Hvala za vso pomoč :)
Jupyter Notebook morate odpreti v mapi C:\Users\Janez\PycharmProjects\pypinm

Če ga odprete v C:\Users\Janez\, potem morate imeti __init__.py datoteko še v mapah Janez in PycharmProjects import bi v tem primeru zgledal tako:
from Janez.PycharmProjects.pypinm.moduli import prvi_modul
+3 votes

Za ločevanju map moraš napisati moraš dva backslasha \\, torej:

sys.path.append('C:\\Users\\Janez\\PycharmProjects\\pypinm\\moduli')

Zakaj 2 x backslash? Ker ima uporaba enega backslasha z nekaterimi drugimi črkami določen pomen (npr. \n  predstavlja newline - novo vrstico.)

Mape pa lahko ločuješ tudi z slashom:

sys.path.append('C:/Users/Janez/PycharmProjects/pypinm/moduli')

answered Oct 19, 2015 by blaz (41,550 points)
edited Oct 19, 2015 by blaz
0 votes
Če pa kdo želi importirati neko funkcijo iz enega ipython notebooka v drugi ipython notebook kot modul je pa postopek malo zahtevnejši. Opisan je tukaj:

http://nbviewer.ipython.org/github/ipython/ipython/blob/master/examples/IPython%20Kernel/Importing%20Notebooks.ipynb
answered Nov 26, 2015 by matija.brumat (1,870 points)
...