Tenho um módulo Python existente com um traço no nome, foo-bar.py
Alterar o nome do módulo é algo que eu preferiria evitar, pois o módulo é compartilhado e eu teria que rastrear todos os locais em que ele é usado para que meu caso especial funcione.
Existe uma maneira de carregar um módulo cujo nome contém o normalmente proibido '-'?
(Eu entendo que esta não é uma prática recomendada. Mas para esta situação, eu preferiria não reprojetar e testar um conjunto muito maior de aplicativos. Além disso, não acho que meus mestres corporativos aprovariam meu tempo para implementar tal mudança.)
foo-bar
s porfoobar
ou algo assim? Quão difícil é isso?Respostas:
Você pode fazer isso usando
__import__()
. Por exemplo:Mas você realmente deve renomear o módulo. Dessa forma, você pode evitar confusão onde o nome do arquivo do módulo é diferente do identificador usado no programa.
fonte
Sei que essa pergunta já foi respondida de forma satisfatória para quem fez a pergunta, mas aqui está outra resposta que acredito ter algum mérito acima de usar
__import__()
.De acordo com a documentação:
Python 2.7
+ apenasfonte
Tente usar sublinhado em vez de hífen.
importar pymysql_utils
funcionou para mim, embora import pymysql-utils fosse o nome do módulo usado pelo pip
fonte