2015-08-05 2 views
0

Я относительно новый в Python, и я только начал работать над созданием каталога скелетов, чтобы начать распространять мои проекты и так далее. Я последовал за книгой LPTHW (упражнение 46) и сделал каталоги так же, как он сказал, но также прочитал документацию для сценария установки и Distutils. Я на Windows, в настоящее время, и я построил это так:Python - не могу импортировать, nosetests throws error

C:\Python27\projects 
      - skeleton 
      - newproj 
       - (d) bin 
         - foo.py 
       - (d) docs 
       - (d) newproj 
         - __init__.py 
       - (d) tests 
         - __init__.py 
         - newproj_test.py 
       - setup.py 

setup.py является тем же самым, что, например в документации по по:

from distutils.core import setup 
setup(name = 'foo', 
     version = '1.0', 
     py_modules = ['foo'], 
    ) 

И в «INIT» сценарий есть что-то я не понимаю, почему, но:

from nose.tools import * 
import foo 

def setup(): 
    print "SETUP!" 

def teardown(): 
    print "TEAR DOWN!" 

def test_basic(): 
    print "I RAN!" 

Внутри newproj у меня есть каталог бен, в котором я написал простой скрипт Ф.О. o.py. Дело в том, что я открываю интерпретатор Python, и он не находит foo.py в любом месте. Если я перейду к cmd, мне придется пройти весь путь до C: \ Python27 \ projects \ newproj \ bin, а затем введите python, чтобы я смог импортировать foo. Как я могу это изменить? Есть ли способ импортировать вещи, а не идти в точном месте сценария/модуля/программы (не знаю точно, какая разница между ними еще), чтобы импортировать его?

Настоящая проблема заключается в том, что я должен запускать nosetests в каталоге newproj, и он не должен вызывать никаких ошибок, но он говорит, что нет модуля с именем foo, и я не знаю, что сделай теперь, я как бы попробовал все. Я изменил переменную Path, чтобы эти три: C: \ python27 \ Scripts; C: \ python27; C: \ python27 \ Проекты

+0

Ваша setup.py не соответствует той, что указана в [упражнении] (http://learnpythonthehardway.org/book/ex46.html). Несвязанный: я не уверен в 'tests/__ init __. Py' (он создает пакеты Python на верхнем уровне) и' bin/foo.py' (если у вас нет десятков скриптов, каталог 'bin' не оправдывает трения). – jfs

ответ

0

Попробуйте добавить C:\Python27\projects\newproj\bin в переменную окружения PYTHONPATH

0

Я бы чтобы пройти весь путь до C: \ Python27 \ projects \ newproj \ bin, а затем введите python, поэтому я могу импортировать foo. Как я могу это изменить?

Я тоже изучаю python. Одна из самых больших ошибок начинающих - это пройти весь путь до точного местоположения файла. НИКОГДА не делай этого !! в вашем случае, вы должны быть в C: \ python27 \ проекты \ newproj затем оттуда типа питона в оболочке и импорта обув с помощью:

from bin import foo 

но прежде чем успешно импортировать его, вы должны убедиться, что у вас есть файл init.py внутри каталога, в котором вы импортируете.