-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathindex.html
142 lines (142 loc) · 9.41 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<!doctype html>
<html lang="en" ng-app="app">
<head>
<meta charset="utf-8">
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css" rel="stylesheet">
<link rel="icon" href="favicon.ico">
<link rel="icon" href="wheel.svg">
<style>
body{margin-top:15px;}
a.btn, h1{text-align: center;}
a.btn:last-child, canvas, body{margin-bottom:15px;}
a.btn {border-bottom-width: 0; border-radius: 0; width: 100%}
a.btn:first-child{border-top-left-radius: 5px; border-top-right-radius: 5px;}
a.btn:last-child{border-bottom-width: 1px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px;}
pre {text-align: left;}
footer{text-align: center;}
@media (prefers-color-scheme: dark) {
body {
color: #ccc;
background: black;
}
code, pre {
color: #ccc;
background: #222;
}
a {
color: #5bf;
}
a:hover,
a:hover div {
color: black;
background-color: #5bf;
outline: 0.05em solid #5bf;
}
.btn-default {
color: #ccc;
background: black;
border-color: #222;
}
.btn-default:hover,
.btn-default:focus,
.btn-default:active,
.btn-default.active,
.open.dropdown-toggle.btn-default {
color: #ccc;
background: #222;
border-color: #333;
}
}
</style>
<title>Python Wheels</title>
</head>
<body ng-controller="wheelCtrl">
<div class="container">
<div class="row">
<div class="col-sm-6">
<h1 id="wheels">Python Wheels</h1>
<object data="wheel.svg" type="image/svg+xml" width="380" height="380" class="center-block"></object>
<h2 id="what">What are wheels?</h2>
<p><a href="https://pypi.org/project/wheel">Wheels</a> are <a href="https://www.python.org/dev/peps/pep-0427">the new standard</a> of Python distribution and are intended to replace eggs. Support is offered in <code>pip >= 1.4</code> and <code>setuptools >= 0.8</code>.</p>
<h3 id="advantages">Advantages of wheels</h3>
<ol>
<li>Faster installation for pure Python and native C extension packages.</li>
<li>Avoids arbitrary code execution for installation. (Avoids setup.py)</li>
<li>Installation of a C extension does not require a compiler on Linux, Windows or macOS.</li>
<li>Allows better caching for testing and continuous integration.</li>
<li>Creates .pyc files as part of installation to ensure they match the Python interpreter used.</li>
<li>More consistent installs across platforms and machines.</li>
</ol>
<h2 id="about-list">What is this list?</h2>
<p>This site shows the top 360 most-downloaded packages on <a href="https://pypi.org/">PyPI</a> showing which have been uploaded as wheel archives.</p>
<ul>
<li><span class="text-success">Green</span> packages offer wheels,</li>
<li><span class="text-muted">White</span> packages have no wheel archives uploaded (yet!).</li>
</ul>
<p>Packages that are known to be deprecated are not included. (For example distribute). If your package is incorrectly listed, please <a href="https://github.com/meshy/pythonwheels/issues/">create a ticket</a>.</p>
<p>This used to show the all-time most-downloaded packages. The all-time list is no longer available, and the packages in <a href="https://hugovk.github.io/top-pypi-packages/">the last-30-days list</a> will change to reflect more closely what the Python community is using.
<p>This is not the official website for wheels, just a nice visual way to measure adoption. To see the authoritative guide on wheels and other aspects of Python packaging, see the <a href="https://packaging.python.org">Python Packaging User Guide</a>.</p>
<h2 id="creating-wheels">My package is white. What can I do?</h2>
<h3 id="pure-wheel">Pure Python</h3>
<p>If you have a pure Python package that is not using 2to3 for Python 3 support, you've got it easy. Make sure Wheel is installed…</p>
<pre>
pip install wheel</pre>
<p>…and when you'd normally run <code>python setup.py sdist</code>, run instead <code>python setup.py sdist bdist_wheel</code>. For a more in-depth explanation, see this guide on <a href="https://hynek.me/articles/sharing-your-labor-of-love-pypi-quick-and-dirty/">sharing your labor of love</a>.</p>
<p><em>Note: </em>If your project is Python 2 and 3 compatible you can create a universal wheel distribution. Create a file called <code>setup.cfg</code> with the following content and upload your package.</p>
<pre>
[bdist_wheel]
universal = 1</pre>
<p><strong>Warning: </strong>If your project has optional C extensions, it is recommended not to publish a universal wheel, because pip will prefer the wheel over a source installation.</p>
<p><em>Note: </em>To include your project's license file in the wheel distribution, specify the <code>license_files</code> key in the <code>[metadata]</code> section. This helps comply with many open source licenses that require the license text to be included in every distributable artifact of the project. This option requires wheel 0.32 or newer.</p>
<pre>
[metadata]
license_files = LICENSE
</pre>
<h3 id="dirty-wheel">C extensions</h3>
<p>PyPI currently allows uploading platform-specific wheels for Windows, macOS and Linux. It is useful to create wheels for these platforms, as it avoids the need for your users to compile the package when installing.</p>
<p>You will need to have access to the platform you are building for. Projects like <a href="https://github.com/pypa/cibuildwheel">cibuildwheel</a> or <a href="https://github.com/multi-build/multibuild">multibuild</a> provide tooling and guidance to build binary wheels for different platforms using various continuous integration (CI) services.</p>
<h2 id="bugs">Something's wrong with this page!</h2>
<p>Fantastic, a problem found is a problem fixed. Please <a href="https://github.com/meshy/pythonwheels/issues/">create a ticket</a>!</p>
<p>You can also <a href="https://github.com/meshy/pythonwheels/pulls/">submit a pull-request</a>.</p>
<p><em>Note: </em>Requests for behavioural changes in the packaging tools themselves should be directed to <a href="https://mail.python.org/mailman/listinfo/distutils-sig">distutils-sig</a> and the <a href="https://github.com/pypa/packaging-problems">Python Packaging Authority</a>.</p>
<h2 id="thanks">Thanks</h2>
<p>Thanks to the <a href="https://python3wos.appspot.com/">Python 3 Wall of Superpowers</a> for the concept and making their code open source, <a href="https://twitter.com/dstufft">Donald Stufft</a> for his help on IRC, <a href="https://twitter.com/jturnbull">James Turnbull</a> for the intro copy, and <a href="https://ghickman.co.uk/">George Hickman</a> for pointing me in the right direction as usual.</p>
<p>Thanks also to the many <a href="https://github.com/meshy/pythonwheels/graphs/contributors">contributors</a>.</p>
</div>
<div class="col-sm-6">
<div class="list">
<span ng-hide="packages">pythonwheels.com requires javascript to be enabled to display the list of packages.</span>
<a ng-repeat="package in packages" ng-href="https://pypi.org/project/{{ package.name }}" class="btn btn-{{ package.css_class }}" ng-attr-title="{{package.title}}">
<span ng-bind="package.name"></span>
<span ng-bind="package.icon"></span>
</a>
</div>
</div>
</div>
<footer>
<p>Written by <a href="https://meshy.co.uk/">meshy</a>, code on <a href="https://github.com/meshy/pythonwheels">GitHub</a>.</p>
<p>Last updated <span ng-bind="last_update"></span>. (Updated daily.)</p>
</footer>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js"></script>
<script>
var app = angular.module('app', [])
.controller('wheelCtrl', function ($scope, $http){
$http.get('results.json').then(function(res){
$scope.last_update = res.data.last_update;
$scope.packages = res.data.data;
});
});
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-45641000-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</body>
</html>