小白求教 python 引入pygal模块后该模块无法使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小白求教 python 引入pygal模块后该模块无法使用相关的知识,希望对你有一定的参考价值。

该先下载这一个android模块:ImportError,再导入。我的也是
定义模块,只要使用文本编辑器,把一些python代码输入到文本中,然后以.py为后缀名进行保存,任何此类文件都会被认为是python模块。
比如说,下面的代码输入到一个文件中,就可以看作是一个模块:
def printme(var):
print var
if __name__ == '__main__':
printme(1)

假设说输入到a.py中,那么import a就可以把这个模块导入。
然后可执行a.printme(3),屏幕即可打印出3:
>>> a.printme(3)
3
>>>

一个模块顶层定义的变量,会自动变成模块的属性。例如:
data=[1,2,3]
def printme(var):
print var
if __name__ == '__main__':
printme(1)

data变量就是模块的一个属性。其实printme也是一个属性,只不过是一个函数罢了。
引入模块示例如下:(假定此时data=[1,2,3]未定义)

>>> import a
>>> a.data

Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
a.data
AttributeError: 'module' object has no attribute 'data'
>>> reload(a)
<module 'a' from 'C:/py\a.pyc'>
>>> a.data

Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
a.data
AttributeError: 'module' object has no attribute 'data'
>>>

从上述提示可以看出data属性未定义,此时再在a.py文件中定义data=[1,2,3],重新加载a模块,并输出data属性:
>>> reload(a)
<module 'a' from 'C:/py\a.py'>
>>> a.data
[1, 2, 3]
>>>

这里的reload函数可以重新加载一个模块。如果在模块代码中更改了,那么需要重新加载。
上面a.data,就是访问模块中的属性。
上面的例子是导入一个文件作为一个模块。
其实python的模块导入还有更丰富的内容。
除了模块名之外,python也可以导入指定目录路径。python代码的目录就称为包。因此,这类导入就称为包导入。事实上,包导入是把计算机上的目录变成python的一个命名空间。而属性就是目录中包含的子目录或者是模块文件。
看下面例子:
在我的桌面上有一个aa文件夹,里面有bb文件夹,bb里面有a.py这个文件。
那么在aa和bb文件夹中分别放置一个__init__.py,之后,在命令行中import aa.bb.a,就可以导入模块a了。
希望本文所述对大家的Python程序设计有所帮助。
参考技术A 应该先下载一个android模块,再导入。我的也是:ImportError: No module named android

Python开发模块:Pygal 绘制直方图

Pygal

  Pygal可用来生成可缩放的矢量图形文件,对于需要在尺寸不同的屏幕上显示的图表,这很有用,可以自动缩放,自适应观看者的屏幕

1、Pygal模块安装

Windows系统

# Pygal模块安装

$ pip3 install pygal

Linux和OS X系统

# Pygal模块安装

$ pip install --user pygal==1.7

 

2、Pygal画廊-直方图

  模拟掷骰子,分析最后的结果,生成图形

创建die.py筛子类文件:

from random import randint

class Die():
    ‘‘‘扔骰子的类‘‘‘

    def __init__(self,num_sides=6):
        self.num_sides = num_sides # 骰子的面数

    def roll(self):
        return randint(1,self.num_sides)

创建die_visual.py文件,生成直方图:

from die import Die
import pygal

die = Die()

# 数据集合
results = []
count = 1
for roll_num in iter(lambda *args:die.roll(),None):
    results.append(roll_num)
    if count >= 1000:
        break
    count +=1

# 分析结果
frequencies= []
for value in range(1,die.num_sides+1):
    frequencie = results.count(value)
    frequencies.append(frequencie)

# 对结果进行可视化
hist = pygal.Bar()      # 生成实例
hist.title = ‘Results of rolling one D6 1000 times‘  # 标题
hist.x_labels = [‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘]           # X轴数值坐标
hist.x_title = ‘Result‘                                 # X轴标题
hist.y_title = ‘Frequency of Result‘                # Y轴标题

hist.add(‘D6‘,frequencies)                             # 传入Y轴数据
hist.render_to_file(‘die_visual.svg‘)               # 文件生成路径,必须为svg格式文件

通过浏览器打开die_visual.svg文件:

技术分享

 

3、同时掷两枚骰子

修改die_visual.py文件:

from die import Die
import pygal

die1 = Die()
die2 = Die()

# 数据集合
results = []
for i in range(5000):
    result = die1.roll() + die2.roll()
    results.append(result)

# 分析结果
frequencies= []
for value in range(2,die1.num_sides+die2.num_sides+1):
    frequencie = results.count(value)
    frequencies.append(frequencie)

# 对结果进行可视化
hist = pygal.Bar()      # 生成实例
hist.title = ‘Results of rolling one D6 5000 times‘  # 标题
hist.x_labels = [‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,‘10‘,11,12]           # X轴数值坐标
hist.x_title = ‘Result‘                                 # X轴标题
hist.y_title = ‘Frequency of Result‘                # Y轴标题

hist.add(‘D6+D6‘,frequencies)                             # 传入Y轴数据
hist.render_to_file(‘die_visual.svg‘)               # 文件生成路径,必须为svg格式文件

浏览器浏览图形die_visual.svg

技术分享

 

以上是关于小白求教 python 引入pygal模块后该模块无法使用的主要内容,如果未能解决你的问题,请参考以下文章

Python开发模块:Pygal 绘制直方图

[Python]pygal模块

Python模块-pygal之First steps

谈谈Python实战数据可视化之pygal模块(实战篇)

谈谈Python实战数据可视化之pygal模块(基础篇)

python3.6使用pygal模块不具交互性,图片不能显示数据