Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Importing files from different folder

I have the following folder structure.

application ├── app │   └── folder │       └── file.py └── app2     └── some_folder         └── some_file.py 

I want to import some functions from file.py in some_file.py.

I've tried

from application.app.folder.file import func_name 

and some other various attempts but so far I couldn't manage to import properly. How can I do this?

like image 444
Ivan Avatar asked Dec 08 '10 02:12

Ivan


People also ask

How do I import a module into a different folder?

The most Pythonic way to import a module from another folder is to place an empty file named __init__.py into that folder and use the relative path with the dot notation. For example, a module in the parent folder would be imported with from .. import module .

How do I import a folder?

Set up an import folderGo to Preferences > Import folders. Click Connect a folder to open a file picker window. Locate the folder you want to connect, and click Select.


2 Answers

Note: This answer was intended for a very specific question. For most programmers coming here from a search engine, this is not the answer you are looking for. Typically you would structure your files into packages (see other answers) instead of modifying the search path.


By default, you can't. When importing a file, Python only searches the directory that the entry-point script is running from and sys.path which includes locations such as the package installation directory (it's actually a little more complex than this, but this covers most cases).

However, you can add to the Python path at runtime:

# some_file.py import sys # insert at 1, 0 is the script path (or '' in REPL) sys.path.insert(1, '/path/to/application/app/folder')  import file 
like image 109
Cameron Avatar answered Sep 27 '22 00:09

Cameron


Nothing wrong with:

from application.app.folder.file import func_name 

Just make sure folder also contains an __init__.py, this allows it to be included as a package. Not sure why the other answers talk about PYTHONPATH.

like image 21
joey Avatar answered Sep 25 '22 00:09

joey