У меня есть структура каталогов, как:импортировать мой локальный модуль в Python3, чтобы он мог я установил в системе через пип
tree
.
├── bin
│ └── mkbib.py
├── LICENSE
├── mkbib
│ ├── __init__.py #empty file
│ ├── menubar.ui #a xml file. where should I place it?
│ ├── menu.py
│ ├── pybib.py
│ └── view.py
├── mkbib.desktop.in #should be copied to /usr/local/applications
├── README
└── setup.py
с bin/mkbib.py
основной файл, который импортирует файлы в mkbib/
. И в bin/mkbib.py
, я использую:
import mkbib.menu as menu
import mkbib.view as view
# import view
# import pybib
Если все файлы находятся в том же каталоге, последние две строки достаточно. Я разделил их в соответствии с принятым ответом here.
Но теперь, когда я пытаюсь запустить код, я получаю сообщение об ошибке:
File "mkbib.py", line 26, in __init__
self.TreeView = view.treeview()
NameError: name 'view' is not defined
Моя конечная цель состоит в том, чтобы установить mkbib
приложение в /bin/
, так же, как вопрос я связан, но у меня нет никакого успеха.
Мои setup.py
является:
from setuptools import setup, find_packages
from codecs import open
from os import path
here = path.abspath(path.dirname(__file__))
with open(path.join(here, 'README'), encoding='utf-8') as f:
long_description = f.read()
setup(
name='mkbib',
version='0.1',
description='BibTeX Creator',
url='https://github.com/rudrab/mkbib',
author='Rudra Banerjee',
author_email='[email protected]',
license='GPLv3',
packages=['mkbib'],
package_dir={'mkbib': 'mkbib'},
scripts=['bin/mkbib.py']
)
Когда я бегу setup.py
, я получаю;
sudo python3 setup.py develop
running develop
running egg_info
writing top-level names to mkbib.egg-info/top_level.txt
writing mkbib.egg-info/PKG-INFO
writing dependency_links to mkbib.egg-info/dependency_links.txt
reading manifest file 'mkbib.egg-info/SOURCES.txt'
writing manifest file 'mkbib.egg-info/SOURCES.txt'
running build_ext
Creating /usr/lib/python3.5/site-packages/mkbib.egg-link (link to .)
mkbib 0.1 is already the active version in easy-install.pth
Installing mkbib.py script to /usr/bin
Installed /home/rudra/Devel/mkbib/Mkbib
Processing dependencies for mkbib==0.1
Finished processing dependencies for mkbib==0.1
Я также пытался экспортировать PYTHONPATH в mkbib
:
echo $PYTHONPATH
~/Devel/mkbib/Mkbib/mkbib
Как я уже говорил, если все файлы находятся в том же каталоге, его работы безупречны.
Структура mkbib.py
«s (как спросил GeckStar):
#!/usr/bin/python3
import gi
import sys
# import mkbib
import mkbib.menu as menu
import mkbib.view as view
# import view
# import pybib
import urllib.parse as lurl
import webbrowser
import os
from gi.repository import Gtk, Gio # , GLib, Gdk
gi.require_version("Gtk", "3.0")
class Window(Gtk.ApplicationWindow):
def __init__(self, application, giofile=None):
Gtk.ApplicationWindow.__init__(self,
application=application,
default_width=1000,
default_height=200,
title="mkbib")
self.TreeView = view.treeview()
self.MenuElem = menu.MenuManager()
self.Parser = pybib.parser()
self.name = ""
.........
class mkbib(Gtk.Application):
def __init__(self):
Gtk.Application.__init__(self)
self.connect("startup", self.startup)
self.connect("activate", self.activate)
..........
def install_excepthook():
""" Make sure we exit when an unhandled exception occurs. """
old_hook = sys.excepthook
def new_hook(etype, evalue, etb):
old_hook(etype, evalue, etb)
while Gtk.main_level():
Gtk.main_quit()
sys.exit()
sys.excepthook = new_hook
if __name__ == "__main__":
app = mkbib()
r = app.run(sys.argv)
sys.exit(r)
Пожалуйста, помогите.
Вы действительно * запустили * setup.py', чтобы установить пакет? – jonrsharpe
jonrsharpe да, но ошибочно я показал более старую 'setup.py' с другой файловой структурой. Правильно (atleast current) 'setup.py', и запуск включен. Пожалуйста, посмотрите. – BaRud
Было бы полезно увидеть остальную часть вашего файла 'mkbib.py', особенно первые 26 строк, так как там происходит ошибка. – GeckStar