安装在系统中我有一个目录结构:导入我的本地模块中python3所以我可以通过PIP
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
我的最终目标是安装在/bin/
的mkbib
应用,同我有联系的问题,但我没有任何成功。
我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
的结构(如要求通过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'。正确(至少是当前)'setup.py',现在包含运行。请看看。 – BaRud
看到mkbib.py文件的其余部分会很有帮助,尤其是前26行,因为这是错误发生的地方。 – GeckStar