Estou tendo dificuldade para entender como a importação de módulos funciona em Python (nunca fiz isso em nenhuma outra linguagem antes).
Digamos que eu tenho:
myapp/__init__.py
myapp/myapp/myapp.py
myapp/myapp/SomeObject.py
myapp/tests/TestCase.py
Agora estou tentando obter algo assim:
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
No entanto, definitivamente estou fazendo algo errado, pois o Python não pode ver que myapp
é um módulo:
ImportError: No module named myapp
import
no meu,TestCase.py
mas ele ainda me deu o mesmo erro. Estou assumindo que é porque está em um subdiretório do__init__.py
?from ... import ...
certo?from myapp.tests import TestCase from a script outside myapp. If you're running
python TestCase.py` dentro da pasta de testes, você não poderá fazer importações relativasfrom fodername import file_name_of_my_py_code
, mas quando tentei acessar o objeto definido,file_name_of_my_py_code.py
ele dizNameError: name 'ClassName' is not defined
A função
import
procura arquivos no seu ambiente PYTHONPATH. variável e seu diretório local. Então você pode colocar todos os seus arquivos no mesmo diretório ou exportar o caminho digitando para um terminal:fonte
export
termos "definido PYTHONPATH =% PYTHONPATH%; C: \ caminho_para_myapp \ myapp \ myapp \"exportar caminho é uma boa maneira. Outra maneira é adicionar um .pth ao local dos pacotes de sites. No meu mac, meu python mantém pacotes de sites em / Library / Python, mostrados abaixo
Criei um arquivo chamado awesome.pth em /Library/Python/2.7/site-packages/awesome.pth e, no arquivo, coloquei o seguinte caminho que referencia meus módulos impressionantes
fonte
Podes tentar
porque o nome do seu projeto é igual ao myapp.py, o que faz com que ele procure primeiro o documento do projeto
fonte
No seu primeiro diretório myapp, você pode adicionar um arquivo setup.py e adicionar dois códigos python em setup.py
no seu primeiro diretório myapp na linha de comando, use pip install -e. instalar o pacote
fonte
pip install
no Windows 10, o padrão é instalar em 'Arquivos de programas / PythonXX / Lib / site-packages', que é um diretório que requer privilégios administrativos. Por isso, corrigi meu problema executando o pip install como administrador (você deve abrir o prompt de comando como administrador, mesmo se estiver conectado com uma conta de administrador). Além disso, é mais seguro chamar pip do python.por exemplo, em
python -m pip install <package-name>
vez de
pip install <package-name>
fonte
No meu caso, foi surpresa do Windows vs Python, apesar dos nomes de arquivos do Windows não diferenciarem maiúsculas de minúsculas, a importação do Python é. Portanto, se você tiver um
Stuff.py
arquivo, precisará importar esse nome como está.fonte
Você precisa ter
em todas as pastas com código com as quais você precisa interagir. Você também precisa especificar o nome da pasta superior do seu projeto em todas as importações, mesmo que o arquivo que você tentou importar esteja no mesmo nível.
fonte