Я встретил ту же проблему. Выбранное решение мне очень помогло, но я считаю необходимым добавить точность, чтобы сделать функциональный код вопроса: определить лямбда-функцию вне цикла. Кстати, значение по умолчанию не требуется.
foo = lambda d: lambda : self.root.change_directory(d)
for d in directorys:
self.command["cd " + d] = (foo(d))
В целом единственная вещь, требуемая использовать допускающее повторное использование приложение, состоит в том, чтобы удостовериться, что это находится на sys.path
, так, чтобы можно было импортировать его из кода Python. В большинстве случаев (если автор применяет лучшую практику), допускающее повторное использование приложение tarball или пакет будут содержать каталог верхнего уровня с документами, README, setup.py
, и затем подкаталог, содержащий реальное приложение (см. django-голосовать за пример; само приложение находится в "голосующем" подкаталоге). Этот подкаталог - то, какие потребности быть помещенным в Ваш Python соединяют каналом. Возможные методы для того, чтобы сделать, которые включают:
pip install appname
, если приложение было загружено на PyPI (в эти дни большинство) setup.py install
(это имеет тот же результат как pip install appname
, но требует, чтобы Вы сначала загрузили и распаковали код сами; зернышко сделает это для Вас) setup.py install
или pip install appname
с этим virtualenv активный, или размещение или symlinking приложение в пакетах сайта virtualenv (настоятельно рекомендованный по всей "глобальной установке" опции, если Вы оцениваете свою будущую исправность) Вы будете знать, что у Вас есть он в правильном месте, если можно включить интерпретатор Python и "импорт, голосующий" (например), не получая ImportError.
На сервере, где у Вас есть доступ FTP только, Ваша единственная опция является действительно последней, и они должны настроить его для Вас. Если они утверждают, что поддерживали Django, они должны обеспечить приблизительно [1 110] место, где можно загрузить пакеты, и они будут доступны для импорта в Python. Не зная детали Вашего webhost, невозможно сказать, как они структурируют это для Вас.