侧边栏壁纸
博主头像
人称西安金城武博主等级

一个假理科生&伪程序员

  • 累计撰写 95 篇文章
  • 累计创建 109 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Python3安装turtle全教程

人称西安金城武
2022-08-10 / 0 评论 / 3 点赞 / 191 阅读 / 784 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-09-09,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

说明

最近需要使用Python2中的turtle画图,使用默认的pip install turtle无法安装成功,会报错,下载源码安装成功,特此记录。

步骤

首先,下载官网turtle源码,官网地址:turtle-0.0.2

这时,直接解压后安装是无法安装的,因为turtle是Python2的库,语法是Python2,需要修改

修改文件setup.py

#!/usr/bin/env python

# Copyright (c) 2008-2009 Adroll.com, Valentino Volonghi.
# See LICENSE for details.

"""
Distutils installer for turtle.
"""

try:
    # Load setuptools, to build a specific source package
    import setuptools
except ImportError:
    pass

# For great justice, take off every zig.
import sys, os, pprint, traceback

import turtle
version = turtle.__version__

install_requires = ["Twisted>=8.0.1", "PyYAML>=3.0.8"]

setup = setuptools.setup
find_packages = setuptools.find_packages

# Most of the following code is from Divmod Epsilon, (C) 2008 Divmod, Inc.
# under MIT license, see http://divmod.org/trac/wiki/DivmodEpsilon
# since I only need this to install turtle correctly with Twisted
# Plugins I'd rather copy this few lines than actually add another
# dependency. Also this version uses the setuptools setup() function.

def pluginModules(moduleNames):
    from twisted.python.reflect import namedAny
    for moduleName in moduleNames:
        try:
            yield namedAny(moduleName)
        except ImportError:
            pass
        except ValueError, ve:
            if ve.args[0] != 'Empty module name':
                traceback.print_exc()
        except:
            traceback.print_exc()

def _regeneratePluginCache(pluginPackages):
    ## print 'Regenerating cache with path: ',
    ## pprint.pprint(sys.path)
    from twisted import plugin
    for pluginModule in pluginModules([
        p + ".plugins" for p in pluginPackages]):
        # Not just *some* zigs, mind you - *every* zig:
        #print 'Full plugin list for %r: ' % (pluginModule.__name__)
        list(plugin.getPlugins(plugin.IPlugin, pluginModule))

def regeneratePluginCache(dist, pluginPackages):
    if 'install' in dist.commands:
        sys.path.insert(0, os.path.abspath(dist.command_obj['install'].install_lib))
        _regeneratePluginCache(pluginPackages)

def autosetup(**kw):
    packages = []
    datafiles = {}
    pluginPackages = []

    for (dirpath, dirnames, filenames) in os.walk(os.curdir):
        dirnames[:] = [p for p in dirnames if not p.startswith('.')]
        pkgName = dirpath[2:].replace('/', '.')
        if '__init__.py' in filenames:
            # The current directory is a Python package
            packages.append(pkgName)
        elif 'plugins' in dirnames:
            # The current directory is for the Twisted plugin system
            pluginPackages.append(pkgName)
            packages.append(pkgName)

    for package in packages:
        if '.' in package:
            continue
        D = datafiles[package] = []
        #print 'Files in package %r:' % (package,)
        #pprint.pprint(os.listdir(package))
        for (dirpath, dirnames, filenames) in os.walk(package):
            dirnames[:] = [p for p in dirnames if not p.startswith('.')]
            for filename in filenames:
                if filename == 'dropin.cache':
                    continue
                if (os.path.splitext(filename)[1] not in ('.py', '.pyc', '.pyo')
                    or '__init__.py' not in filenames):
                    D.append(os.path.join(dirpath[len(package)+1:], filename))
    autoresult = {
        'packages': packages,
        'package_data': datafiles,
        }
    #pprint.pprint(autoresult, indent=4)
    assert 'packages' not in kw
    assert 'package_data' not in kw
    kw.update(autoresult)
    distobj = setup(**kw)
    regeneratePluginCache(distobj, pluginPackages)
    return distobj

description = """\
Turtle is an HTTP proxy whose purpose is to throttle connections to
specific hostnames to avoid breaking terms of usage of those API
providers (like del.icio.us, technorati and so on).
"""

autosetup(
    name = "turtle",
    author = "Valentino Volonghi",
    author_email = "valentino@adroll.com",
    url = "http://adroll.com/labs",
    description = description,
    license = "MIT License",
    version=version,
    install_requires=install_requires,
    classifiers = [
        'Development Status :: 4 - Beta',
        'Environment :: Web Environment',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Natural Language :: English',
        'Programming Language :: Python',
        'Topic :: Internet',
    ],
    include_package_data=True,
    zip_safe=False
)

修改上述代码第40行:

except ValueError as ve:

修改第20行:

version = "0.0.2"

执行安装:

# pip install turtle的路径
pip install D:\turtle-0.0.2

安装成功如图:

成功安装turtle

结语

注意安装时需要使用管理员权限运行powershell,否则会报错。
本文使用Python3.10.4,turtle-0.0.2

3

评论区