Meu universo de trabalho, para bem ou para mal, e Windows. E para Windows que eu preciso desenvolver solucoes.Python nao e muito amigavel para o ambiente Windows, mas ja foi muito pior. As vezes precisamos de um modulo e quando vamos a pagina do autor so encontramos o codigo fonte compactado como um tar.gz. Nestes casos, costumamos encontrar muito modulos ja compilados na excelente colecao do Christoph Gohlke.Mesmo assim, pode-se encontrar algum modulo que o Gohlke nao incluiu na sua lista, alem de ser ruim ficar na dependencia de terceiros. Ai precisamos estar preparados para compilar o codigo fonte.Para isso, segui a excelente receita do Victor Jabur. Conto aqui a minha experiencia em compilar a versao mais recente do PyCrypto com algumas particularidades do meu ambiente.SequenciaAs instrucoes do Victor Jabur funcionaram para mim (so trabalho com 32 bits e por isso segui a segunda parte do artigo dele). Eis a sequencia sem muitos detalhes:1. Instalacao do Visual C++ 2008 Express Edition - A versao 2008 e necessaria para utilizacao com Python 2.6 a 3.2. De 3.3 para a frente passou-se a usar a versao 2010 no CPython.2. Eu ja tinha o Python 2.7 e o setuptools instalados. Nao foi necessario reinstalar.3. Edite os dois arquivos que do disutils conforme as instrucoes do Victor Jabur. Primeiro o arquivo [caminho instalacao do python]/Lib/distutils/msvccompiler.py: insira a linha def get_build_version(): """Return the version of MSVC that was used to build Python. For Python 2.3 and up, the version number is included in sys.version. For earlier versions, assume the compiler is MSVC 6. """ return 9.0 #<== INSIRA ESTA LINHA prefix = "MSC v." i = string.find(sys.version, prefix) if i == -1: return 6 i = i + len(prefix) s, rest = sys.version[i:].split(" ", 1) majorVersion = int(s[:-2]) - 6 minorVersion = int(s[2:3]) / 10.0 # I don't think paths are affected by minor version in version 6 if majorVersion == 6: minorVersion = 0 if majorVersion >= 6: return majorVersion + minorVersion # else we don't know what version of the compiler this is return NonePara mim, esta funcao estava na linha 153. 4. Agora edite tambem o arquivo [caminho instalacao do python]/Lib/distutils/msvc9compiler.py. Fica assim: def manifest_setup_ldargs(self, output_filename, build_temp, ld_args): # If we need a manifest at all, an embedded manifest is recommended. # See MSDN article titled # "How to: Embed a Manifest Inside a C/C++ Application" # (currently at http://msdn2.microsoft.com/en-us/library/ms235591(VS.80).aspx) # Ask the linker to generate the manifest in the temp dir, so # we can check it, and possibly embed it, later. temp_manifest = os.path.join( build_temp, os.path.basename(output_filename) + ".manifest") ld_args.append('/MANIFESTFILE:' + temp_manifest) ld_args.append('/MANIFEST') # <== INSIRA ESTA LINHA5. Baixe os arquivos fonte do modulo que voce deseja compilar e extraia em alguma pasta a sua escolha.6. Na pasta onde estao os arquivos fonte utilize os seguintes comandos:python setup.py build --compiler msvcpython setup.py installpython setup.py bdist_wininst Feito. Se tudo correu bem, ja temos o modulo devidamente compilado e instalado. Na lista de comandos do item 6, o ultimo comando e opcional e e usado para gerar um instalador com interface grafica para o ambiente