2016-02-25 18 views
6

Zbudowałem i zainstalowałem niestandardową aplikację Django po oficjalnym samouczku https://docs.djangoproject.com/en/1.8/intro/reusable-apps/Gdzie jest mój niestandardowy kod aplikacji Django?

Instalacja wygląda na pomyślną.

$ pip install --user ../horizon2fa-0.1.tar.gz 

Processing /opt/stack/horizon2fa-0.1.tar.gz 
    Requirement already satisfied (use --upgrade to upgrade): horizon2fa==0.1 from file:///opt/stack/horizon2fa-0.1.tar.gz in /opt/stack/.local/lib/python2.7/site-packages 
Building wheels for collected packages: horizon2fa 
    Running setup.py bdist_wheel for horizon2fa ... done 
    Stored in directory: /opt/stack/.cache/pip/wheels/a6/4a/f0/4533f85d90b8f1a274a35d3865a2e0b15ff85f0570a0708679 
Successfully built horizon2fa 

Gdzie mogę znaleźć kod źródłowy wszystkich moich niestandardowych klas i metod?

Próbowałem przeszukać go w moim systemie, ale ich nie znalazłem. Czy kod został skompilowany?

$ sudo find/-name "*horizon2fa*" 

/root/.cache/pip/wheels/a0/9d/24/d8070ea2a01759ce7ebc03c34393db8a5aceccd380e60481c5/horizon2fa-0.1-cp27-none-any.whl 
/opt/stack/.cache/pip/wheels/a6/4a/f0/4533f85d90b8f1a274a35d3865a2e0b15ff85f0570a0708679/horizon2fa-0.1-cp27-none-any.whl 
/opt/stack/.local/lib/python2.7/site-packages/horizon2fa-0.1.dist-info 
/opt/stack/horizon2fa-0.1.tar.gz 

Moduł wydaje się nie został poprawnie zainstalowany.

python -c "import horizon2fa; print(horizon2fa.__path__)" 

Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
ImportError: No module named horizon2fa 

Poniżej widoczna jest struktura mojego katalogu aplikacji.

[email protected]:~/Development/openstack2FA/horizon2fa$ tree 
. 
├── admin.py 
├── dist 
│   └── horizon2fa-0.1.tar.gz 
├── enabled 
│   └── _31000_myplugin.py 
├── horizon2fa.egg-info 
│   ├── dependency_links.txt 
│   ├── PKG-INFO 
│   ├── SOURCES.txt 
│   └── top_level.txt 
├── __init__.py 
├── LICENSE 
├── main.py 
├── MANIFEST.in 
├── migrations 
│   ├── 0001_initial.py 
│   └── __init__.py 
├── models.py 
├── panel.py 
├── README.rst 
├── setup.py 
├── templates 
│   ├── base.html 
│   └── horizon2fa 
│    ├── created.html 
│    ├── index.html 
│    ├── login.html 
│    ├── new.html 
│    └── view.html 
├── tests.py 
├── urls.py 
├── user.py 
└── views.py 

I mój skrypt setup.py.

import os 
from setuptools import find_packages, setup 

with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as readme: 
    README = readme.read() 

# allow setup.py to be run from any path 
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir))) 

setup(
    name='horizon2fa', 
    version='0.1', 
    packages=find_packages(), 
    include_package_data=True, 
    license='BSD License', # example license 
    description='A Django app.', 
    long_description=README, 
    url='http://www.trex.com/', 
    author='trex', 
    author_email='[email protected]', 
    classifiers=[ 
     'Environment :: Web Environment', 
     'Framework :: Django', 
     'Framework :: Django :: X.Y', # replace "X.Y" as appropriate 
     'Intended Audience :: Developers', 
     'License :: OSI Approved :: BSD License', # example license 
     'Operating System :: OS Independent', 
     'Programming Language :: Python', 
     # Replace these appropriately if you are stuck on Python 2. 
     'Programming Language :: Python :: 2', 
     'Programming Language :: Python :: 2.7', 
     'Programming Language :: Python :: 3', 
     'Programming Language :: Python :: 3.4', 
     'Programming Language :: Python :: 3.5', 
     'Topic :: Internet :: WWW/HTTP', 
     'Topic :: Internet :: WWW/HTTP :: Dynamic Content', 
    ], 
) 
+0

Czy nie są one w '/ opt/stack/.local/lib/python2.7/site-packages'? – doru

+0

Oczywiście używasz Linuksa (lub innego systemu operacyjnego w stylu UNIX), więc ścieżka instalacji prawdopodobnie jest '/ usr/local/lib/{{twoja wersja pythona}}/site-packages'. Jest to przynajmniej lokalizacja w systemach opartych na Debianie. – cezar

+0

Nie widzę mojego kodu źródłowego w pakietach witryny. ls -lh /opt/stack/.local/lib/python2.7/site-packages/horizon2fa-0.1.dist-info/ łącznie 28K -rw-rw-r-- 1 stos stosu 15 lutego 25 09:38 OPIS.pierwszy -rw-rw-r-- 1 stos stosu 4 lutego 25 09:38 INSTALATOR -rw-rw-r-- 1 stos stosu 905 25 lutego 09:38 METADATA -rw-rw-r-- 1 stos stack 967 Feb 25 09:38 metadata.json -rw-rw-r-- 1 stos stosu 735 lutego 25 09:38 RECORD -rw-rw-r-- 1 stos stosu 11 lutego 25 09:38 top_level.txt -rw-rw-r-- 1 stos stosu 93 lutego 25 09:38 KOŁA – trex

Odpowiedz

1

Ponieważ stosowane --user, pakiet jest zainstalowany dla bieżącego użytkownika (ten, który wydał pip install --user), a nie w systemie site-packages katalogu. Zobacz dokumentację dla site.USER_BASE. Tak więc powinieneś sprawdzić w dokumencie ~/.local/, prawdopodobnie: /home/%user%/.local/lib/python%version%/site-packages/.

Ponadto, biorąc pod uwagę, że pakiet został zainstalowany gdzieś na PYTHONPATH, można spróbować go znaleźć, uruchamiając następujące polecenie w powłoce:

python -c "import %module%; print(%module%.__path__)" 

tj

python -c "import horizon2fa; print(horizon2fa.__path__)" 

dotycząceTwojego aktualizacja pytania:

Powinieneś utworzyć katalog najwyższego poziomu, np. django-horizon2fa i włóż setup.py, MANIFEST.in, README.RST, LICENSE.txt i swój katalog paczek django-horizon2fa. Pliki związane z instalacją są w nowym katalogu, a wszystkie pliki związane z tym modułem znajdują się wewnątrz katalogu w tym reż. Bieżąca konfiguracja katalogu nie pozwala na poprawne wykonanie zadania find_packages().

django-horizon2fa 
│ 
├── LICENSE 
├── MANIFEST.in 
├── README.rst 
├── setup.py 
└── horizon2fa 
    ├── __init__.py 
    ├── admin.py 
    ├── tests.py 
    ├── urls.py 
    ├── user.py 
    ├── views.py 
    ├── enabled 
    │ └── _31000_myplugin.py 
    ├── main.py 
    ├── migrations 
    │ ├── 0001_initial.py 
    │ └── __init__.py 
    ├── models.py 
    ├── panel.py 
    ├── tests.py 
    ├── urls.py 
    ├── user.py 
    ├── views.py 
    └── templates 
     ├── base.html 
     └── horizon2fa 
      ├── created.html 
      ├── index.html 
      ├── login.html 
      ├── new.html 
      └── view.html 

P.S. Używanie wyłącznie MANIFEST.in może czasami prowadzić do problemów z włączeniem danych pakietowych do dystrybucji, np. szablony. W takim przypadku rozważ dostarczenie plików z domeny MANIFEST.in w słowniku package_data do setup(), patrz details in the docs.

+0

Widzę wewnątrz tylko folder informacyjny dist. $ ls -lh ~/.local/lib/python2.7/site-packages/ łącznie 0 drwxrwxr-x 2 stos stosu 131 Feb 25 10:04 horizon2fa-0.1.dist-info drwxrwxr-x 2 stos stack 45 25 lutego, 09:38 migracji – trex

+0

@trex, proszę zobaczyć odpowiedź. Jeśli import się nie powiedzie, prawdopodobnie pakiet ma problem z instalacją. Następnie musisz dodać swoją oryginalną strukturę katalogów pakietów i 'setup.py' do twojego pytania w celu dalszych badań. Mogą to być problemy, np. użyłeś python2 pip do zainstalowania pakietu i spróbuj go zaimportować do skryptu uruchamianego przez python3 - oczywiście pakiet instaluje się w różnych miejscach dla python2 pip i python3 pip. – Nikita

+0

Nikita, masz rację, jest problem z instalacją. Zaktualizowałem moje pytanie. – trex

Powiązane problemy