我有一个名为rra.py
具有以下骨架结构:
usn=""
usnl=[]
from bs4 import BeautifulSoup
import re
import asys
import glob
import os
import sys
import sys
def inputIndex():
#some processsing
def getval():
#some processing
def parsehtml():
#some processsing
def ret():
#some processing
def main():
inputIndex()
ret()
parsehtml()
getval()
print "watsuup"
asys.Compavg()
asys.compSub()
print "nearly done"
return 0
if __name__ == '__main__':
inputIndex()
main()
asys.Compavg()
asys.compSub()
我还有另一个脚本asys.py
我在上面的脚本中导入了它rra.py
其中有以下内容。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
import statsmodels.api as sm
from numpy.random import randn
import matplotlib as mpl
import seaborn as sns
sns.set_color_palette("deep", desat=.6)
mpl.rc("figure", figsize=(8, 4))
def Compavg():
data=Total()
markMax=[]
markAvg=[]
N = 5
ind = np.arange(N)
width = 0.35
fig = plt.figure()
ax = fig.add_subplot(111)
markMax.extend((data["Total"].max(),data["Total.1"].max(),data["Total.2"].max(),data["Total.3"].max(),data["Total.4"].max()))
markAvg.extend((data["Total"].mean(),data["Total.1"].mean(),data["Total.2"].mean(),data["Total.3"].mean(),data["Total.4"].mean()))
rects1 = ax.bar(ind, markMax, width, color='black')
rects2 = ax.bar(ind+width, markAvg, width, color='green')
ax.set_xlim(-width,len(ind)+width)
ax.set_ylim(0,120)
ax.set_ylabel('Marks')
ax.set_title('Max, Mean and Your Marks')
xTickMarks = ['Subject'+str(i) for i in range(1,6)]
ax.set_xticks(ind+width)
xtickNames = ax.set_xticklabels(xTickMarks)
plt.setp(xtickNames, rotation=10, fontsize=10)
ax.legend( (rects1[0], rects2[0]), ('Max', 'Mean') )
plt.show()
print "finished reading 1"
def compSub():
#max_data = np.r_[data["Total"]].max()
#bins = np.linspace(0, max_data, max_data + 1)
data=Total()
print data['Total']
plt.hist(data['Total'],linewidth=0, alpha=.7)
plt.hist(data['Total.1'],linewidth=0,alpha=.7)
plt.hist(data['Total.2'],linewidth=0,alpha=.7)
plt.hist(data['Total.3'],linewidth=0,alpha=.7)
plt.hist(data['Total.4'],linewidth=0,alpha=.7)
plt.title("Total marks Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()
print "finished reading 2"
def Total():
print "going to read"
data=pd.read_csv("output11cs.csv")
df3=data[['Total','Total.1','Total.2','Total.3','Total.4','Total.5','Total.6','Total.7']]
data["Main Total"]=df3.sum(axis=1)
data = data.dropna()
data.reset_index(drop=True)
return data
#compSub()
#Compavg()
当我执行时rra.py
在 virtualenv 外部(甚至在 virtualenv 内部)使用python rra.py
它完美执行并绘制图形和直方图,如所示asys.py
.
然后我创建了一个“setup.py”文件来打包它,如下所示:
from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup, find_packages
from setuptools.command.test import test as TestCommand
import vturra
import sys
class PyTest(TestCommand):
def finalize_options(self):
TestCommand.finalize_options(self)
self.test_args = []
self.test_suite = True
def run_tests(self):
import pytest
errcode = pytest.main(self.test_args)
sys.exit(errcode)
setup(name="vturra",
version=vturra.__version__,
license='Apache Software License',
tests_require=['pytest'],
install_requires=['matplotlib>=1.2.1',
'pandas',
'numpy',
'scipy',
'beautifulsoup',
'requests',
'patsy',
'seaborn==0.2.1',
'BeautifulSoup4'
],
cmdclass={'test': PyTest},
description="Downloads results from VTU website and analyzes the result",
long_description=open('README.md').read(),
author="Muhammed Thaha",
author_email='[email protected] /cdn-cgi/l/email-protection',
download_url='https://github.com/stormvirux/vturra',
packages=find_packages(exclude='tests'),
package_data={'vturra': ['data/*.xml']},
include_package_data=True,
platforms='any',
test_suite='vturra.test.test_vturra',
classifiers = [
'Programming Language :: Python',
'Development Status :: 1 - Beta',
'Natural Language :: English',
'Environment :: Web Environment',
'Intended Audience :: Developers',
'License :: OSI Approved :: Apache Software License',
'Operating System :: OS Independent',
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
],
extras_require={
'testing': ['pytest'],
},
entry_points={
"console_scripts": [
"vturra=vturra.rra:main"
#"pip%s=pip:main" % sys.version[:1],
#"pip%s=pip:main" % sys.version[:3],
],
}
)
我使用安装包python setup.py install
in virtualenv
安装一切顺利。现在当我执行包时vturra
我收到以下错误:
Traceback (most recent call last):
File "asys.py", line 65, in <module>
compSub()
File "asys.py", line 46, in compSub
plt.hist(data['Total'],linewidth=0, alpha=.7)
File "/home/storm/Documents/lol/local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 2827, in hist
stacked=stacked, **kwargs)
File "/home/storm/Documents/lol/local/lib/python2.7/site-packages/matplotlib/axes.py", line 8249, in hist
if isinstance(x, np.ndarray) or not iterable(x[0]):
File "/home/storm/Documents/lol/local/lib/python2.7/site-packages/pandas/core/series.py", line 491, in __getitem__
result = self.index.get_value(self, key)
File "/home/storm/Documents/lol/local/lib/python2.7/site-packages/pandas/core/index.py", line 1032, in get_value
return self._engine.get_value(s, k)
File "index.pyx", line 97, in pandas.index.IndexEngine.get_value (pandas/index.c:2661)
File "index.pyx", line 105, in pandas.index.IndexEngine.get_value (pandas/index.c:2476)
File "index.pyx", line 149, in pandas.index.IndexEngine.get_loc (pandas/index.c:3215)
File "hashtable.pyx", line 382, in pandas.hashtable.Int64HashTable.get_item (pandas/hashtable.c:6450)
File "hashtable.pyx", line 388, in pandas.hashtable.Int64HashTable.get_item (pandas/hashtable.c:6394)
KeyError: 0L
但是如果我注释掉函数调用asys.compSub()
in main()
它工作没有任何错误。
UPDATE当作为独立脚本在外部执行时,该函数可以完美运行virtualenv
但里面virtualenv
你会得到上面的错误。
我相信这是一个问题virtualenv
then?